リダイレクトの概要は【基本】HTTP リダイレクト概要を参照してください。
リダイレクトを簡単に説明すると、クライアント(ブラウザ)がURLへアクセスすると、アクセスされたサーバは別のURLを見るようにクライアントを誘導することです。
今回は、リダイレクトの種類について説明します。
目次
リダイレクトの種類
リダイレクトは送信元を別のURLへ誘導するという処理は変わりませんが、レスポンスコードによって意味が異なります。
リダイレクトは大きく3つの種類に分類されます。
・恒久的なリダイレクト
・一時的なリダイレクト
・特殊なリダイレクト
リダイレクト選定ポイント
まず、上記の 恒久的なリダイレクト、一時的なリダイレクトは検索エンジンの検索に影響があるので意識すべきポイントです。
リダイレクトは、リダイレクト先へのアクセスをGETメソッドへ変換します。GETへ変換させないこともできます。ゆえにGETに変換させたいかどうかによりステータスコードを選定します。
この2つのポイントを意識しながら以後のリダイレクトのステータスコードを見ていきましょう。
恒久的なリダイレクト
WEBサイトやWEBサービスが新しくなり、URLが変更されたことを意味します。
検索エンジンの影響
検索エンジンのロボットは、URLが変更されたと判断しリダイレクト先のURLを意識するようになります。
ステータスコード
301
リダイレクトメソッドはGETへ変換されます。ただし、GETへの変換はユーザーエージェントによります。
308
301はメソッドをGETへ変換してしまう可能性がある為、POSTで送信されたものがGETへと変換されてしまいます。308はメソッドの変換、リクエスト本文の変更は行われません。
一時的なリダイレクト
WEBサイトやWEBサービスのURLが一時的に使えないことを意味します。
検索エンジンの影響
検索エンジンのロボットは、恒久的なリダイレクトと違いリダイレクト先のURLを意識しません。
ステータスコード
302
リダイレクトメソッドはGETへ変換されます。ただし、GETへの変換はユーザーエージェントによります。
303
リダイレクトメソッドは必ずGETへ変換されます。POSTやPUTなどリクエストBody(本文)の内容は失われます。
307
302はメソッドをGETへ変換してしまう可能性がある為、POSTで送信されたものがGETへと変換されてしまいます。307はメソッドの変換、リクエスト本文の変更は行われません。
特殊なリダイレクト
あまり使用されることはないようです。今はそこまで意識する必要はないですが簡単に説明します。
ステータスコード
300
ユーザがリダイレクト先を選択できます。リダイレクト先がHTMLに記載されている場合、ユーザはそのリストを選択することができるようです。
304
使用頻度は多くないと言いましたが、304は多いかもしれません。
クライアントへキャッシュを利用するように指示します。クライアント(ブラウザ)はWEBページを表示する際にサーバからページを読み込みます。毎回読み込みをするは時間と読み込み容量を消費します(読み込みパケット量が消費されるいう意味です)。しかし、一度読み込みを行えばブラウザは読み込んだものをキャッシュ(記憶)します。このキャッシュを利用すればページの再読み込みが行われないので、時間と読み込み容量の消費がされないという利点があるようです。
これはページの表示が早くなるので非常に有効です。
最後に
リダイレクトの種類は上記の通りですが、ポイントとして以下となります。
・まず、恒久的か一時的かというケースを考える。
・次に、クライアントからのPOSTやPUTなどアクセスをリダレクト先へそのままリダイレクトするか、リダイレクト先にはPOSTさせたくないかを判断する。
ステータスコード303、特殊なリダイレクトはどのような時に使えば良いかはっきりしていません。そのようなリダイレクトがあると思っておけば良いと思います。