HTTPリダイレクト 【HTTP redirect】
概要
HTTPリダイレクト(HTTP redirect)とは、HTTP通信におけるWebサーバからクライアントへの応答の種類の一つで、要求された資源の別の所在を応答するもの。ファイルやサイトが移転した場合などに用いられる。Webコンテンツの伝送に用いられるHTTPでは、WebブラウザなどのクライアントからWebサーバにファイルなどの資源を要求(リクエスト)する。資源が存在すれば応答(レスポンス)として送信するが、元の場所から移転するなど別の場所にある場合にはリダイレクトを指示する応答を返す。
HTTPレスポンスのステータスコード300番台がリダイレクト用となっており、所在を示すURLがある場合は「Location:」ヘッダで通知する。通常用いられるのは恒久的な移転を表す「301」と一時的な移転を表す「302」、キャッシュを読み込むよう指示する「304」だが、複数の選択肢を示す「300」、アップロード時などに案内ページなどを示す「303」なども用意されている。
301リダイレクト (301 Moved Permanently)
ステータスコード「301」を用いて行なうHTTPリダイレクト。“Moved Permanently” (恒久的に移転)を意味し、リクエストされたURLは新しいURLに恒久的に移転し、元のURLはもはや無効であることを表す。WebサイトやWebページの移転などの際に用いられる。
同じ意味を表すコードに「308 Permanent Redirect」があるが、301はリダイレクト時にリクエストメソッドを変更(POSTメソッドからGETメソッドなど)してしまうWebブラウザがあるため、同じメソッドでアクセスするよう強制するために用意されている。POSTメソッドのリダイレクトなどで用いられる。
302リダイレクト (302 Found)
ステータスコード「302」を用いて行なうHTTPリダイレクト。HTTP 1.0では “Moved Temporarily” (一時的な移転)、HTTP 1.1では “Found” (発見した)を意味し、リクエストされたURLは新しいURLに一時的に移転したことを表す。
同じ意味を表すコードに「307 Temporary Redirect」があるが、301と308の関係と同じように、301ではリダイレクト時にリクエストメソッドを変更されてしまう場合があるため、同じメソッドで読み込むよう強制したい場合に307を返すようにする。
なお、PUTメソッドでファイルを操作する場合などには、ブラウザ側にその資源自体を応答するわけではないため、ブラウザに表示する案内ページなどを指定するために「303 See Other」を用いることがある。