302 Found

リソースは一時的に別の URL にあります。

使いどころ

一時的なリダイレクト。クライアントが POST を GET に変えることがあるため、明示するには 303 か 307 を使うのがおすすめです。

知っておきたいこと

元の URL が戻ってくる場合は 302 を使います。一時的なメンテナンスページ、A/B テスト、ログインのリダイレクト、言語選択などです。検索エンジンは元の URL をインデックスに残しますが、Google は何か月も続く 302 を恒久的なものとして扱い始めます。ブラウザーは Cache-Control や Expires で指定されない限り 302 をキャッシュしないので、リダイレクトをまだテストしている間は安全な選択肢です。

ブラウザーは歴史的に、302 をたどる際に POST を GET に書き換えてボディを破棄しており、現在の仕様もそれを認めています。メソッドを維持する必要があるなら 307 を、フォーム送信後なら意図を明確にするために 303 を使います。よくあるバグは、http と https、あるいは www とネイキッドドメインの間のリダイレクトループで、プロキシや Cloudflare の Flexible SSL が原因であることがよくあります。curl -IL でリダイレクトの連鎖をたどって確認しましょう。

リダイレクト (3xx)

3xx はリダイレクトです。リクエストを完了するには、クライアントが別の場所へ移動するか、キャッシュしたコピーを使う必要があります。

レスポンスでの表示

HTTP/1.1 302 Found

返し方

Node.js / Expressres.redirect(302, '/new-url')
Python / Flaskreturn redirect('/new-url', code=302)
nginxreturn 302 https://example.com$request_uri;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く