前書き
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 のほうがナチュラルと言えるかもしれません。