PHP
HTTP
Web

リダイレクト時に利用すべきHTTPステータスコード

More than 3 years have passed since last update.


前書き

Wikipediaの情報が不完全だったので個人的にまとめておきます。


早見表

コード
フレーズ
用途
GETへの変更

301
Moved Permanently
恒久的な移動
許可

302
Found
一時的な移動
許可

303
See Other
新規リソースへの移動
強制

307
Temporary Redirect
一時的な移動
禁止

308
Permanent Redirect
恒久的な移動
禁止

※「許可」は実質、ほとんどのブラウザでGETに変更される模様です。


具体例


掲示板への投稿が終わって遷移させるときは…

303 See Other を使いましょう。過去には 302 Moved Temporarily (302 Found の以前の名称) が使われていましたが、現在では迷わずこれ1択です。


メンテナンス中にお知らせページに飛ばしたいときは…

302 Found または 307 Temporary Redirect を使いましょう。「POSTのままお知らせページに飛ばす」ようにしても特に意味が無さそうなので、302 Found のほうがナチュラルと言えるかもしれません。

【追記】

もしURLを変更せずにそのページで即503 Service Unavailableで返せるような設計になっていれば、そうしたほうが良いでしょう。


サイトを移転したときは…

301 Moved Permanently または 308 Permanent Redirect を使いましょう。「POSTのまま新しいサイトに飛ばす」ようにしても特に意味が無さそうなので、301 Moved Permanently のほうがナチュラルと言えるかもしれません。


参考文献