web-dev-qa-db-fra.com

Utilisation de DNS pour rediriger vers une autre URL avec un chemin

J'essaie de rediriger un domaine vers un autre via DNS.

Je sais que l'utilisation de IN CNAME est possible.

www.proof.com IN CNAME www.proof-two.com.

Ce dont j'ai besoin, c'est d'une redirection avec un chemin. Quand quelqu'un tape www.proof.com, il devrait les amener à www.proof-two.com/path/index.htm

Je sais que cela peut être fait en utilisant les installations du serveur Web, mais j'ai besoin de la redirection DNS.

Est-ce possible?

99
contacto contact

Non, ce que vous demandez n'est pas possible. Le DNS est un système de résolution de noms et ne connaît rien du HTTP.

121
eudoxos

si vous utilisez AWS, une redirection telle que

mail.foo.com --> mail.google.com/a/foo.com

peut être configuré comme suit:

  1. dans s3, créez un panier vide "mail.foo.com"
  2. sous Propriétés -> Hébergement statique de sites Web, définissez "rediriger toutes les demandes vers: mail.google.com/a/foo.com"
  3. dans route53, créez un enregistrement A "mail.foo.com"
  4. activer "alias" et définir alias target sur le compartiment "mail.foo.com"

ce n'est pas une solution purement DNS, mais ça marche;)

Attention, la redirection ignore tous les paramètres d'URL, par exemple: ...? Param1 = valeur1 & param2 = valeur2

79
tlossen

Je me rends compte que c'est un vieux fil, mais FWIW, au cas où quelqu'un d'autre cherche un moyen de le faire.

Alors que dns ne comprend pas la portion de chemin de l'URL, il comprendra les sous-domaines, donc au lieu de:

www.proof.com IN CNAME www.proof-two.com/path/index.htm

Vous pouvez utiliser:

www.proof.com IN CNAME proof.proof-two.com

accédez ensuite à l’endroit où vous hébergez proof-two.com et réglez-le de manière à ce qu’il pointe point proof.proof-two.com sur www.proof-two.com/path/index.htm.

~ il y a toujours plus d'une façon de peler un chat

28
another way

J'ai un projet personnel qui pourrait vous aider à résoudre ce problème. C'est une solution de redirection open source qui vous permet de rediriger votre domaine en modifiant simplement vos paramètres DNS. Lien du projet: https://redirect.center/ .

Pour rediriger www.proof.com vers www.proof-two.com en conservant les paramètres d'URL, définissez simplement votre entrée www DNS sur proof.com:

www.proof.com IN CNAME www.proof-two.com.opts-uri.redirect.center.

14
Udlei Nati

Pour répondre à la question initiale, non, ce que vous voulez n'est pas possible en utilisant uniquement le DNS (comme tout le monde l'a indiqué). En plus de tout ce qui a déjà été mentionné, une autre option consiste à utiliser un service de redirection d'URL. Ces types de services peuvent vous permettre de configurer différents types de redirection d’URL en fonction de vos besoins. Par exemple:

  1. Transférer un sommet de domaine vers un site www. sous-domaine ou vice versa
  2. Transférer une collection de noms de domaine vers une destination unique (utile pour transférer les fautes d'orthographe de domaine, les anciens noms de société, etc.)
  3. Transférer des noms de domaine spécifiques vers des pages fortement liées (comme ce que veut le PO)

Un service qui fait cela est EasyRedir . Divulgation complète: j'ai développé EasyRedir. Cependant, il existe certainement d'autres options. Je vous encourage donc à jeter un coup d'œil autour de vous.

10
wgrrrr

Vraiment c'est facile avec redirect.center

Si vous voulez créer un CNAME en tant que:

www.proof.com IN CNAME www.proof-two.com/path/index.htm

en utilisant redirect.center, votre CNAME a la forme canonique suivante:

www.proof.com IN CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.redirect.center.

Maintenant, si vous voulez rediriger vers le site Web https, vous pouvez ajouter cette option:

www.proof.com IN CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.opts-https.redirect.center.

Maintenant, vous pouvez créer un CNAME avec le mode canonique avec une barre oblique dans votre page de destin.

9
Alvaro Aguilar

Modifier

Il semble que ce soit mon fournisseur (OVH) qui autorise ce type de redirection au sein de son infrastructure.

Voir: https://www.ovh.com/fr/g1339.redirection-nom-de-domaine

Je garde la réponse ci-dessous à des fins d’archivage, mais elle ne fournit aucune information utile.

Réponse originale

Je l'ai fait en utilisant un enregistrement TXT.

Pour rediriger foo.bar.com vers foo2.bar.com/path, ajoutez simplement foo IN TXT "1|foo2.bar.com/path" dans votre bar.com zone DNS.

Il conserve également les chemins d'accès et les paramètres. Donc, si vous essayez d'accéder à foo.bar.com/hello?foo=bar, vous serez redirigé vers foo2.bar.com/path/hello?foo=bar.

8
Gabriel

DNS ne redirigera pas la portion de chemin d'une URL, ce qui ne sera donc pas possible.

Ajouter

www.proof.com IN CNAME www.proof-two.com

dirigera l’accès de www.proof.com à www.proof-two.com, où vous devrez utiliser la configuration du serveur Web pour diriger les utilisateurs vers la page appropriée.

5
Karl Barker

@contacto contact et @adlawson

Je vais tirer pour la lune ici parce que je suis confronté à un défi similaire en ce moment. J'ai trouvé une solution qui, au niveau technique, est implémentée sur le serveur DNS.

La divulgation complète: J'utilise www.dnsmadeeasy.com pour gérer mon DNS pour votre kilométrage peut varier selon GoDaddy ou d'autres bureaux d'enregistrement Vanilla.

Ma solution DNS:

Utiliser un enregistrement de redirection HTTP - Je pointe une URL http://techshiftacademy.com vers un lien bitly doté d'une inscription de base pour une classe Python.

3
azatar

Je suppose que vous avez ce scénario: Vous avez un serveur Web unique hébergeant plusieurs sites Web, chacun étant censé être présenté par un domaine séparé:

ainsi, la page1.html devrait être servie par www.customer1.com et ainsi de suite.

  1. créer un sous-domaine dans le example.com serveur DNS (votre serveur Web):

    client1.exemple.com

  2. dans les paramètres de votre serveur virtuel Apache, mappez le sous-domaine sur le répertoire contenant le site Web de votre client n ° 1, comme suit:

<VirtualHost *:80> SetEnv PAGE_ID "customer1" ServerName customer1.example.com ServerAlias www.customer1.com DocumentRoot /your/local/path/webserver/customer1 </VirtualHost> s'il vous plaît noter la valeur pour "ServerAlias", il est important pour l'étape suivante-

à ce stade, vous devriez pouvoir accéder à votre site Web client1 en accédant à:

client1.exemple.com

  1. Dans les paramètres DNS de customer1.com, vous devez créer un enregistrement CNAME:

    CNAME = www LOCATION = customer1.example.com

Maintenant, vous êtes autorisé à utiliser: www.customer1.com.

3
christian

Ma solution à ce problème était assez simple et directe. Tout ce dont vous avez besoin est un serveur IIS fonctionnant dans le domaine.

Configurez CNAME dans DNS pour qu'il pointe vers le serveur IIS, à l'aide des noms d'hôte dans IIS pour résoudre plusieurs sites sur un seul serveur IIS. J'utilise le même serveur IIS pour attribuer quelques sous-domaines à des sites externes.

Ensuite, dans IIS setup setup, la redirection de la configuration de ce site vers votre site/chemin hors site, dans mon cas, c’était notre catalogue hébergé vers lequel je voulais que catalog.ourdomain.com se rende. À partir de là, tous les réglages sont effectués dans IIS. Assurez-vous d'activer l'authentification anonyme afin que le trafic ne soit pas bloqué.

3
Don Schaefer

Un travail connexe a conclu tout ce qui suit:

Problème:

http://a.com/p1/p2.html devrait aller à http://B.com/p1/p2.html
aujourd'hui, mais plus tard lorsqu'il est configuré manuellement/automatiquement, le même
http://a.com/p1/p2.html devrait aller à http://C.com/p1/p2.html

Réponses:

DNS - convertit le nom en adresse IP

Bien qu'il puisse faire beaucoup de redirections, l'adresse IP restante est toujours indiquée, mais le DNS ne comprend pas le chemin ou la partie de protocole de l'URL, ne comprend que la partie de domaine. En d'autres termes, a.com uniquement est converti en adresse IP. http://a.com/p1/p2.html peut être converti en http://152.132.121.11/p1/p2.html si vous configurez mal dans DNS, alors vous obtiendrez 152.132.121.11 (pas http://152.132.121.11/p1/p2.html ), de sorte que vous obtiendrez une erreur de 400 (400, 403, etc.)

Redirection - c'est http://a.com/p1/p2.html peut être converti en http://b.com/p1/p2.html

Toutes les méthodes telles que GET, POST peuvent fonctionner, si un en-tête ou un corps quelconque est impliqué, mais qu'un serveur Web est impliqué, il peut s'agir d'un point d'échec. L'évolutivité et la disponibilité seront donc essentielles.

Si vous êtes sur AWS, la passerelle 53 -> API est possible à l’aide de domaines personnalisés, en interne, à l’aide du cloud.

C'est possible avec Amazon Certification Manager, les domaines personnalisés AWS Gateway et Route53. Notez la restriction us-east-1 sur ACM.

J'espère que ça aide quelqu'un

3

Comme presque tout le monde l’a déjà dit, il est impossible d’utiliser uniquement le DNS. Comme solution de contournement, je suggérerais d’essayer NGINX ( http://nginx.org/en/docs/http/request_processing.html ).

TL; DR - Dans NGINX, vous pouvez créer plusieurs serveurs virtuels pouvant rediriger votre demande en fonction du nom du serveur.

Ex. http://first.my-server.com redirige vers le lieu A et http://second.my-server.com redirection vers le lieu B, tandis que les deux partagent un serveur physique unique.

2
nyxz

Vous pouvez utiliser htaccess rewrite mod, réécrire dans le sous-dossier si l'utilisateur demande un domaine spécifique et non l'autre.

0
gnvsale