307リダイレクト
307リダイレクトとは、URLが別のアドレスへ一時的に移転したことをブラウザや検索エンジンに伝えるHTTPステータスコード(307 Temporary Redirect)です。302リダイレクトに似ていますが、1つ重要な違いがあります。リダイレクトをたどる際に、元のHTTPメソッド(GET、POSTなど)とリクエストボディを正確にそのまま保持しなければならない点です。
307リダイレクトとは、URLが別のアドレスへ一時的に移転したことをブラウザや検索エンジンに伝えるHTTPステータスコード(307 Temporary Redirect)です。302リダイレクトに似ていますが、1つ重要な違いがあります。リダイレクトをたどる際に、元のHTTPメソッド(GET、POSTなど)とリクエストボディを正確にそのまま保持しなければならない点です。
なぜ重要なのか
307リダイレクトは、リクエストメソッドを保持しながら一時的な移転を明確に知らせるため、POSTフォームの送信やAPI呼び出しを伴うシナリオでのデータ損失を防ぎます。検索エンジンが307レスポンスを受け取ると、元のURLをインデックスに残し、新しいURLへリンクエクイティを引き継ぎません。つまり、一時的なリダイレクトが削除されれば、元のURLのSEO価値は完全に保たれます。ただし、307リダイレクトを長期間維持すると、検索エンジンが元のURLを繰り返し訪れることになり、クロールバジェットを浪費します。一時的な状況が恒久的になった場合は、301または308リダイレクトへ切り替えることが推奨されます。
302との違い
| 属性 | 307 (Temporary Redirect) | 302 (Found) |
|---|---|---|
| HTTPメソッドの保持 | 厳密に保持される(POSTはPOSTのまま) | メソッドが変わる場合がある(POSTがGETになり得る) |
| 標準での定義 | HTTP/1.1で明確に定義されている | HTTP/1.0から存在するが、メソッドの扱いが曖昧 |
| 検索インデックス | 元のURLが保持される | 元のURLが保持される |
| リンクエクイティの引き継ぎ | 引き継がれない | 引き継がれない |
| 主な用途 | POST保持が必要な一時的な移転 | 一般的な一時的な移転 |
302ステータスコードには歴史的な曖昧さがあります。古い標準では、302をたどる際に一部のブラウザがPOSTリクエストをGETへ変換していました。この曖昧さを排除するために、HTTP/1.1仕様で307コードが導入されました。POSTデータを失ってはならない場合、307は302よりも安全な選択肢です。
使用例
- サーバーメンテナンス: トラフィックを一時的に別のサーバーやメンテナンスページへ振り分ける必要がある場合、307リダイレクトを使えば、メンテナンス完了後に元のURLへスムーズに戻せます。
- A/Bテスト: 元のURLの検索順位を保持しながら、一部のユーザーを別のバージョンのページへ一時的に誘導します。
- HSTS(HTTP Strict Transport Security): ブラウザはHTTPリクエストをHTTPSへリダイレクトする際に、内部的に307ステータスコードを使用します。これはブラウザレベルの動作であり、別途サーバー設定を必要としません。
- 一時的なPOSTエンドポイントの移行: POSTメソッドを保持しなければならないフォーム送信や決済処理のリクエストを、一時的に別のエンドポイントへ転送する必要がある場合、307リダイレクトが不可欠です。
Sources:
関連するinblogの投稿
inblogが役立つ点
inblogのダッシュボードは、一時的なリダイレクトに307ステータスコードを使用します。