Mon entreprise vient de le faire avec plusieurs sites Web de grande taille. La procédure de base que nous avons suivie était la suivante:
- Réduisez le TTL du domaine autant que possible. Faites-le à l'avance d'au moins autant de temps que le TTL actuel.
- Configurez le site Web sur le nouveau serveur exactement comme vous voulez que le "produit final" soit
- Ajoutez un nom alias au site sur le nouveau serveur, tel que www2.domain.com ou www-new.domain.com. Avec Apache, vous utiliseriez la directive ServerAlias . Si le site contient du code dynamique (PHP, mod_perl, RubyOnRails, etc.), assurez-vous que le site se comportera et répondra correctement avec ce nouveau nom.
- Au moment du basculement, configurez une redirection sur l'ancien serveur pointant vers le nouveau serveur
- Modifiez le DNS pour que www accède à la nouvelle IP.
Pour Apache, vous devriez probablement utiliser mod_rewrite pour la redirection afin de pouvoir conserver les URI demandés par le client. Une implémentation simple serait:
# old server
<VirtualHost 1.1.1.1:80>
ServerName www.domain.com
RewriteEngine on
RewriteRule ^(.*)$ http://www-new.domain.com$1 [L]
</VirtualHost>
# new server
<VirtualHost 1.1.1.2:80>
ServerName www.domain.com
ServerAlias www-new.domain.com
</VirtualHost>
Cela fera une redirection temporaire 302 pour www.domain.com/anything vers www-new.domain.com/anything. Vous voulez que ce soit temporaire car vous voulez probablement que les moteurs de recherche indexent uniquement www.domain.com, pas www-new.domain.com.
Une fois que le changement DNS pour www.domain.com s'est propagé à votre satisfaction, vous pouvez soit vider complètement www-new, soit faciliter doucement toute personne l'utilisant de nouveau vers www avec une autre redirection. C'est presque le même processus que ci-dessus; configurez l'ancien serveur pour gérer www-new, modifiez le DNS pour que www-new pointe vers l'ancien serveur et configurez une redirection sur l'ancien serveur en envoyant le trafic www-new vers www:
# old server
<VirtualHost 1.1.1.1:80>
ServerName www-new.domain.com
RewriteEngine on
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]
</VirtualHost>
# new server
<VirtualHost 1.1.1.2:80>
ServerName www.domain.com
# ServerAlias removed, no longer needed
</VirtualHost>
Cette fois, vous voulez faire une redirection 301 permanente, encore une fois pour indiquer dans les robots des moteurs de recherche que www.domain.com est le site que vous souhaitez qu'ils indexent.