web-dev-qa-db-fra.com

Comment rediriger le domaine A vers le domaine B en utilisant uniquement les enregistrements A et CNAME

J'ai 2 domaines hébergés chez différents hôtes. J'ai besoin de rediriger le domaine A vers le domaine B. Malheureusement, je ne peux pas faire de redirection 301 depuis l'hôte A, mais je ne peux que modifier/ajouter des entrées DNS (enregistrements A et CNAME) sur l'hôte A.

Il est sûrement possible de rediriger www.DomainA.com vers www.DomainB.com en utilisant uniquement les enregistrements A et les CNAME?

À l'heure actuelle, les entrées DNS sont les suivantes:

DomainA.com.    3600    IN    SOA       ns1.HostA.net.
www             3600    IN    CNAME     www.DomainB.com.    
DomainA.com.    3600    IN    NS        ns1.HostA.net.  
DomainA.com.    3600    IN    NS        ns2.HostA.net.  
DomainA.com.    3600    IN    NS        ns3.HostA.net.

Je veux rediriger

DomainA.com -> DomainB.com
*.DomainA.com -> *.DomainB.com

J'ai essayé la suggestion de ce autre article mais cela n'a pas fonctionné.

Comment puis-je y parvenir uniquement avec A-Records et CNAME s'il vous plaît? Merci pour votre conseil.

Prembo.

52
Prembo

Donc, vous ne regardez pas la redirection en tant que telle (comme cela se produit au niveau de l'application, c'est-à-dire sur Apache/Nginx/partout), mais plutôt sur la résolution DNS. L'hôte sur lequel DomainA est hébergé ne sera ou ne devrait jamais être touché, en fonction de votre description, car vous souhaitez que les demandes DNS soient résolues vers les adresses IP de DomainB. A moins que je manque quelque chose dans votre demande?

Comme Shane l'a souligné, le DNS n'est pas capable de redirection HTTP - c'est un devoir d'application/serveur Web. Vous pourriez faire en sorte que DomainA et DomainB se résolvent sur la même IP sur DNS et tout fonctionnerait. Mais si vous cherchez à le faire par URL/par chemin, ce n'est pas possible - DNS n'en est pas capable - c'est un simple service DNS-> IP, ce qui se passe avec l'URL réelle est la tâche du serveur Web.

Après le commentaire ci-dessous, ce que je ferais, c'est de renvoyer tous les enregistrements DNS pour DomainA aux mêmes IP que DomainB est pointé - de cette façon, vous obtiendrez une requête HTTP frappant hostB et alors c'est juste une simple question de:

  1. créer un hôte virtuel basé sur un nom Apache particulier - qui servira des fichiers à partir de son propre DocumentRoot
  2. créer une redirection permanente sur Apache comme ceci:

Cela réécrira tout ce qui vient de DomainB en DomainA qui peut être hébergé sur le même serveur ou ailleurs. J'apprécie que la deuxième option soit probablement une surcharge et non nécessaire si vous pouvez/êtes autorisé à créer des hôtes virtuels basés sur un nom sur Apache.

<VirtualHost *:80>
  ServerName DomainB
  Redirect permanent / http://DomainA/
</VirtualHost>

J'irais avec 1. - pointer tous les enregistrements DNS de DomainA vers les mêmes IP que DomainB pointe et créer des VirtualHosts nommés particuliers sur Apache.

41
milosgajdos

Comme d'autres l'ont dit, il n'est pas possible d'effectuer une redirection HTTP avec DNS uniquement. DNS et HTTP fonctionnent ensemble pour rediriger un utilisateur d'une page Web vers une autre.

Vous pouvez utiliser DNS seul pour que le domaine A affiche le même contenu que le domaine B, mais le navigateur Web affichera le domaine A dans l'URL. Vous devez être très prudent avec cela car c'est assez mauvais du point de vue du référencement. Vous aurez des ennuis pour le "contenu en double", et les moteurs de recherche vous puniront pour cela.

La bonne façon (d'un point de vue UX et SEO) de faire fonctionner cela est d'effectuer une redirection HTTP du domaine A vers le domaine B.

Vous pouvez configurer manuellement vos serveurs Web (Apache, Nginx, IIS, etc.) pour effectuer ce travail pour vous si vous en êtes techniquement capable. Il existe de nombreuses bonnes ressources pour vous aider sur le Web.

Si vous ne pouvez pas ou ne voulez pas contrôler l'infrastructure, vous pouvez utiliser un service de redirection d'URL pour effectuer ce travail pour vous. Je suis le fondateur de celui qui s'appelle EasyRedir , mais il y en a certainement d'autres.

9
wgrrrr

Le domaine A doit avoir les mêmes adresses IP que dans le domaine B. Il n'est pas nécessaire de faire référence à B dans la définition de A. Les navigateurs Web ne "suivent" pas les CNAME en tant que redirection, ils conserveront le même nom d'hôte et utiliseront le propre enregistrement du CNAME pour se résoudre à une adresse IP.

Si vous souhaitez que B apparaisse dans le navigateur lorsque A est visité (facultatif et sans rapport avec DNS), vous devez faire correspondre l'hôte HTTP et rediriger les demandes sur le serveur Web. avec Apache, vous utiliseriez mod_rewrite pour le faire comme ceci dans une définition d'hôte virtuel:

RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?domainB.com$
RewriteRule ^/(.*)$ http://www.domainA.com/$1 [R=301,L]
5
Kl4m

Bien sûr, il est possible de rediriger, avec l'astuce suivante:

  1. Créer une nouvelle zone principale standard
  2. Nommez-le comme l'URL fictive vers laquelle vous souhaitez rediriger
  3. Assurez-vous que ce nom fictif est différent de tout nom AD DNS
  4. Créez un enregistrement avec les entrées suivantes:

vide ....................... A ......................... ... ip-addr-2

www ......................... A ....................... ..... ip-addr-2

Ce que nous avons ici est essentiellement une redirection. Une URL valide sera résolue en fonction de la zone DNS principale DNS existante. Une URL fictive sera redirigée vers ip-addr-2. Ce qui est important, c'est que le nom de cette entrée est vide, donc il tombera à l'entrée suivante dans l'enregistrement et redirigera vers ip-addr-2

0
Bran Kop