HTTP 302 Found
一時的なリダイレクト: リソースは今だけ別の場所にありますが、元の URL が本来のものであり続けます。
HTTP 302 の意味
HTTP 302 Found は、Location ヘッダーに示された URL からリソースを取得するようクライアントに伝えますが、それは今回限りです — 元の URL は依然として正規のアドレスであり、今後も改めてリクエストされるべきです。
歴史的に、ブラウザは 302 に従う際に POST を GET に変更してしまい、これは仕様と矛盾していました。その後 HTTP には、メソッドの維持を保証する 307 Temporary Redirect が追加されました。302 は単純な GET リダイレクトの実用的なデフォルトであり続けています。
302 レスポンスのよくある原因
- ページが一時的に別の場所から配信されています(メンテナンス、A/B テスト、キャンペーンのランディングページ)。
- ログイン後やチェックアウト後のフローでブラウザをリダイレクトしています(POST-redirect-GET パターンで、技術的には 303 が正確な選択です)。
- 訪問者ごとに変わる、地域や言語に基づくリダイレクトです。
- 本来「恒久的」であるべき移動が、誤って何年も 302 のまま放置されています。
開発者向けの推奨プラクティス
- 実際に恒久的な移動であれば、301/308 に切り替えてください。長期間続く 302 は検索エンジンに混乱したシグナルを送ります。
- リクエストのメソッドとボディを維持する必要がある場合は 307 を、POST の後に強制的に GET させたい場合は 303 を使用してください。
- 明示的な Cache-Control ヘッダーを追加しない限り、302 レスポンスをキャッシュしないでください。
レスポンス例
HTTP/1.1 302 Found Location: https://example.com/summer-sale/ Cache-Control: no-store
SEO への影響
検索エンジンは 302 を見ると、移動が一時的だと宣言されているため、元の URL のインデックスを維持します。数か月間放置された 302 は、多くの場合 Google によって事実上の 301 として扱われますが、明示的にすることが望ましいです: 意図に合ったコードを選んでください。
よくある質問
302 リダイレクトは SEO に悪影響を与えますか?
純粋に一時的な移動に使われている限り問題ありません。恒久的な移動を 302 で配信すると、新しい URL へのシグナル移転が遅れるという問題が生じます。
302 と 307 の違いは何ですか?
307 は、リダイレクトをたどる際に HTTP メソッドが維持されることを保証します。302 は実際にはブラウザによって POST が GET に変換されることがあります。
303 See Other はいつ使うべきですか?
POST を処理した後、GET でブラウザを結果ページに送るためです — 古典的な POST-redirect-GET パターンです。