308リダイレクト
308リダイレクトとは、URLが新しいアドレスへ恒久的に移転したことをブラウザや検索エンジンに伝えるHTTPステータスコード(308 Permanent Redirect)です。301リダイレクトと同様に恒久的な移転を知らせますが、1つ重要な違いがあります。リダイレクトをたどる際に、元のHTTPメソッド(GET、POSTなど)とリクエストボディを正確にそのまま保持しなければならない点です。
308リダイレクトとは、URLが新しいアドレスへ恒久的に移転したことをブラウザや検索エンジンに伝えるHTTPステータスコード(308 Permanent Redirect)です。301リダイレクトと同様に恒久的な移転を知らせますが、1つ重要な違いがあります。リダイレクトをたどる際に、元のHTTPメソッド(GET、POSTなど)とリクエストボディを正確にそのまま保持しなければならない点です。
なぜ重要なのか
308リダイレクトは、恒久的な移転の際にリクエストメソッドを保持しながらリンクエクイティを新しいURLへ引き継ぎます。Googleは、PageRankの引き継ぎ方を含め、308リダイレクトを301リダイレクトと同じように扱うことを公式に認めています。SEOの観点では、恒久的な移転には301と308の両方が適切ですが、POSTリクエストが関係する場合は308がより安全な選択肢です。検索エンジンが308レスポンスを受け取ると、時間の経過とともにインデックス上の古いURLを新しいURLへ置き換え、元のURLが蓄積したリンクエクイティを新しいURLへ引き継ぎます。
301との違い
| 属性 | 308 (Permanent Redirect) | 301 (Moved Permanently) |
|---|---|---|
| HTTPメソッドの保持 | 厳密に保持される(POSTはPOSTのまま) | メソッドが変わる場合がある(POSTがGETになり得る) |
| 恒久性 | 恒久的な移転 | 恒久的な移転 |
| リンクエクイティの引き継ぎ | 新しいURLへ引き継がれる | 新しいURLへ引き継がれる |
| 検索インデックス | 古いURLが新しいURLに置き換わる | 古いURLが新しいURLに置き換わる |
| ブラウザのサポート | すべての最新ブラウザ | レガシーを含むすべてのブラウザ |
| 主な用途 | POST保持が必要な恒久的な移転 | 一般的な恒久的な移転 |
301リダイレクトはHTTP/1.0から使われており、すべてのブラウザやクローラーがサポートしていますが、一部のクライアントは歴史的に301をたどる際にPOSTリクエストをGETへ変換していました。この問題を解決するために、RFC 7538で308ステータスコードが定義されました。単純なページの移転には301で十分ですが、APIエンドポイントやフォーム送信URLの恒久的な変更には308がより適しています。
使用例
- APIエンドポイントの恒久的な移行: REST APIのURLを再構築する際、POST、PUT、DELETEリクエストを処理するエンドポイントには308リダイレクトを使用し、クライアントのリクエストメソッドが保持されるようにします。
- フォーム送信URLの恒久的な変更: 登録、決済、ログインフォームのPOSTリクエストを処理するURLを恒久的に変更する場合、308リダイレクトはユーザーが送信したデータの損失を防ぎます。
- POST保持を伴うドメイン移行: ドメインを移行すると同時にPOSTリクエストを受け取るエンドポイントも移動する場合、308リダイレクトはメソッドとデータの両方を安全に転送します。
- HTTPS移行: HTTPからHTTPSへ恒久的に切り替える際、POSTリクエストがGETへ変換されないことを保証したい場合は、301の代わりに308を使うほうがより正確です。
関連するinblogの投稿
inblogが役立つ点
inblogのダッシュボードは、恒久的なリダイレクトに308ステータスコードを使用します。