web-dev-qa-db-fra.com

DNS redirige domain.com vers www.domain.com

J'ai effectué une recherche sur le Web pour la question, mais totalement déçu des résultats. Le cas est de rediriger toutes les demandes vers domain.com vers le sous-domaine www.domain.com.

Alors ce que j'ai:

  1. www.domain.com - domaine principal du site Web, toutes les demandes des clients doivent être redirigées ici
  2. domain.com - un autre point d'entrée du site Web pour les personnes n'utilisant pas le préfixe www, toutes les demandes doivent être redirigées vers www.domain.com
  3. mydomain.com - alias de site Web alternatif, toutes les demandes doivent être redirigées vers www.domain.com
  4. www.mydomain.com - pour les personnes utilisant le préfixe www, toutes les demandes doivent être redirigées vers www.domain.com

Je comprends que cela est possible en utilisant .htaccess et PHP. Mais je veux comprendre comment cela peut être fait en utilisant uniquement DNS. Je comprends également que le résultat de la requête DNS ne change pas ce qui se passe dans la couche HTTP, donc le nom de domaine entré à l'origine sera toujours celui qui est envoyé au serveur Web dans l'hôte. Donc, pour réécrire domain.com sur www.domain.com, j'aurai toujours besoin d'Apache mod_rewrite. Mais je veux faire la majeure partie du travail avec DNS (enregistrements CNAME et A).

La question principale est donc de savoir quels enregistrements CNAME et A chaque domaine ci-dessus devrait avoir?

55
Maksim

Vous pouvez faire de www.domain.com l'enregistrement A et tous les autres noms de domaine CNAME de www.domain.com. Mais cela "résout" seulement que si l'adresse IP de www.domain.com change, vous n'avez pas à modifier les autres entrées DNS car ce sont des alias.

Donc, au niveau DNS, il n'y a aucun moyen d'imposer une redirection. Et pour une bonne raison parce que DNS est utilisé pour plus que HTTP. Par exemple, si toute demande pour domain.com redirige vers www.domain.com, vos adresses e-mail changeront pour [email protected].

Ainsi, pour la redirection HTTP, vous devrez utiliser une solution HTTP. Cela peut être au niveau du serveur Web (mod_rewrite, dans le code, javascript (ugh), etc.) mais vous pouvez également avoir un proxy devant votre serveur Web pour gérer cela.

52
Michaël Hompus