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 ライブラリ)にのみ不備がありました。