HTTP 308 Permanent Redirect
厳密なルールを持つ恒久的リダイレクト: URL は恒久的に移動し、リクエストは変更せずに繰り返す必要があります。
HTTP 308 の意味
HTTP 308 Permanent Redirect は、301 のメソッド維持版です。リソースは Location の URL に恒久的に移動しており、クライアントはメソッドを変更したりボディを省略したりせずに、そこへリクエストを繰り返さなければなりません。
これは API にとって特に重要です: POST や PUT を受け付けるエンドポイントが恒久的に移動した場合、301 では古いクライアントが密かに GET で再試行してしまい、ペイロードが失われる可能性があります。308 は書き込みをそのまま維持します。
308 レスポンスのよくある原因
- 書き込みを受け付ける API エンドポイントが、新しいパスやドメインに恒久的に移動しました。
- インフラレベルの正規化(例: Cloudflare やロードバランサー)が、メソッドを維持するよう設定されています。
- トレイリングスラッシュの正規化にデフォルトで 308 を使用するフレームワーク(Next.js、一部の CDN)です。
開発者向けの推奨プラクティス
- GET 以外のリクエストが旧 URL に届く可能性がある場合は、301 ではなく 308 を選んでください。
- 301 と同様に、1 回のホップでリダイレクトし、長期にわたってリダイレクトを維持してください。
- 古い API クライアントが 308 を扱えるか確認してください — 非常に古い HTTP ライブラリは自動的にこれをたどらないことがあります。
レスポンス例
HTTP/1.1 308 Permanent Redirect Location: https://api.example.com/v2/upload
SEO への影響
検索エンジンにとって、308 は 301 と同等です: インデックスとランキングのシグナルをターゲット URL に引き継ぐ恒久的な移動です。SEO ではなく、クライアントの都合に基づいてどちらを使うか選んでください。
よくある質問
SEO において 308 は 301 と同じですか?
はい — Google はどちらも恒久的な移動として扱い、新しい URL にシグナルを引き継ぎます。
308 が 301 の代わりに必要になるのはどんなときですか?
リダイレクトされるリクエストが POST、PUT、PATCH、DELETE である可能性があり、メソッドとボディを維持する必要がある場合です。
すべてのブラウザが 308 をサポートしていますか?
すべての最新のブラウザが対応しています。非常に古いクライアント(例: Windows 7 時代の IE、古い HTTP ライブラリ)にのみ不備がありました。