私の会社はこれをいくつかの大げさなWebサイトで実行しました。私たちが従った基本的な手順は次のとおりです。
- ドメインのTTLを可能な限り低くします。これは、少なくとも現在のTTLと同じ時間だけ前もって行ってください。
- 新しいサーバーにWebサイトを設定して、「最終製品」を希望どおりに設定します。
- 新しいサーバーのサイトにエイリアス名(www2.domain.comやwww-new.domain.comなど)を追加します。Apacheでは、ServerAliasディレクティブを使用します。サイトに動的コード(PHP、mod_perl、RubyOnRailsなど)が含まれている場合は、サイトが正しく動作し、この新しい名前で正しく応答することを確認してください。
- カットオーバー時に、古いサーバーで新しいサーバーを指すリダイレクトを設定します。
- wwwのDNSを変更して、新しい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>
これは、www.domain.com / anythingをwww-new.domain.com/anythingに302一時的にリダイレクトします。検索エンジンでwww-new.domain.comではなくwww.domain.comのみをインデックスに登録する必要があるため、一時的なものにする必要があります。
www.domain.comのDNSの変更が満足のいくまで反映されたら、www-newを完全にダンプするか、または別のリダイレクトでwwwにそれを使用する人を優しくリラックスさせることができます。上記とほぼ同じプロセスです。www-newを処理するように古いサーバーをセットアップし、www-newが古いサーバーを指すようにDNSを変更し、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がインデックスを作成するサイトであることを示します。