Моя компания только что сделала это с несколькими большими веб-сайтами. Основная процедура, которой мы следовали, была:
- Понизьте TTL домена в максимально возможной степени. Сделайте это заранее, по крайней мере, столько же времени, сколько текущий TTL.
- Настройте веб-сайт на новом сервере точно так, как вы хотите, чтобы «конечный продукт» был
- Добавьте псевдоним для сайта на новом сервере, например, www2.domain.com или www-new.domain.com. С Apache вы бы использовали директиву ServerAlias . Если на сайте вообще есть какой-либо динамический код (PHP, mod_perl, RubyOnRails и т. Д.), Убедитесь, что сайт будет вести себя правильно и отвечать этим новым именем.
- В другое время установите перенаправление на старый сервер, указывающий на новый сервер
- Измените DNS на www, чтобы перейти на новый IP.
Для Apache вам, вероятно, следует использовать mod_rewrite для перенаправления, чтобы вы могли сохранить URI, запрошенные клиентом. Простая реализация будет:
# 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>
Это сделает временный редирект 302 для www.domain.com/anything на www-new.domain.com/anything. Вы хотите, чтобы он был временным, потому что вы, вероятно, хотите, чтобы поисковые системы индексировали только www.domain.com, а не www-new.domain.com.
После того, как изменение DNS для www.domain.com распространилось к вашему удовлетворению, вы можете либо полностью сбросить www-new, либо осторожно облегчить кому-либо его использование обратно на www с другим перенаправлением. Это почти тот же процесс, что и выше; настройте старый сервер для обработки www-new, измените DNS на www-new, чтобы он указывал на старый сервер, и настройте перенаправление на старый сервер, отправляющий трафик www-new на 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>
На этот раз вы хотите сделать постоянное перенаправление 301, чтобы снова указать сканерам поисковых систем, что www.domain.com - это сайт, который вы хотите, чтобы они проиндексировали.