WEBサイトを引越しするときに、旧サイトにアクセスしてきたユーザーを新サイトにリダイレクトする設定をWEBサーバーに行います。Apacheの場合は、httpd.conf に以下のような設定をします。
そうするとリダイレクトが行われるのですが、見かけ上はサーバー側で転送してくれているように見えます。旧サイトがサイトAで、新サイトがサイトBの場合です。
このリダイレクトの動きをHTTP通信で考えてみました。実際のHTTPでのやりとりは見かけとは違って、以下のようになります。
この①〜④について、書いてみようと思います。
■①旧サイトにアクセスする。
ブラウザがHTTPでサイトAにアクセスします。
GET /indexA.html HTTP/1.1
■②旧サイトからブラウザに結果が戻される。
サイトAからのブラウザへのレスポンスですが、ステータスコードは300番台のコードとなります。300番台はブラウザにリダイレクトを知らせるコードとなります。サイトの引っ越しの場合は恒久的な転送を意味するリダイレクト(ステータスコードは301)を返すようにサイトAのApacheに設定します。HTTPヘッダーには「location」が付与され、転送先URL(サイトBのURL)が設定されます。
HTTP/1.1 301 Moved Permanently
location:(サイトBのURL)
■③新サイトにアクセスする。
ブラウザは「location」で指定されたURLにアクセスを行います。サーバー側でリダイレクトしているように見えるのですが、実際はブラウザが転送先にリダイレクトしています。
GET /indexB.html HTTP/1.1
Referer:(サイトAのURL)
■④新サイトからブラウザに結果が戻される。
サイトBからHTMLで結果が返されてブラウザが画面表示します。
HTTP/1.1 200 OK
以上。