308 Permanent Redirect は、対象のリソースに Location で示される新しい恒久的な URL があり、クライアントはメソッドやボディを変えずに、そこでリクエストし直す必要があることを示します。308 は 301 Moved Permanently に相当する、メソッドを維持するコードです。307 と 302 の関係と同じです。RFC 7238(2014 年)で導入され、RFC 7538(2015 年)で正式な標準となり、現在は RFC 9110 の一部です。
301 と同じく 308 もヒューリスティックにキャッシュ可能なので、ブラウザーはこれを記憶し、次回からは新しい URL に直接移動します。現在のすべてのブラウザー、主要なクローラー、一般的な HTTP ライブラリが 308 に対応しています。対応していなかったのは、Windows 7 の Internet Explorer のようなごく古いクライアントだけです。
レスポンス例
HTTP/1.1 308 Permanent Redirect
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: /docs/
Content-Type: text/plain; charset=utf-8
Content-Length: 21
Redirecting to /docs/ SEO とリダイレクトチェック
Google は 308 を 301 と同様に、リダイレクト先が新しい正規 URL であることを示す強いシグナルとして扱うため、検索結果では新しい URL が古い URL に置き換わります。メソッドを維持する必要がある場合(API、フォームの送信先)や、利用しているプラットフォームがデフォルトで 308 を使う場合は 308 を使いましょう。通常のページの移動では、SEO 上の効果は 301 と 308 で変わりません。
Next.js や Vercel などのプラットフォームは、恒久的なリダイレクトや末尾のスラッシュの正規化に 308 を使います。301 リダイレクトチェッカーでは各ホップが恒久的(301 または 308)か一時的かを確認でき、末尾スラッシュチェッカーでは URL の両方のバリエーションをテストできます。
よくある原因と主な用途
- フレームワークやプラットフォームによる恒久的なリダイレクト(Next.js の
permanent: true、Vercel のリダイレクトルール、CDN のルールなど)。 - リクエストメソッドを維持する必要がある、末尾のスラッシュや大文字・小文字の正規化。
- API エンドポイントが恒久的に移動したが、クライアントが古い URL に
POSTやPUTを送り続けている場合。 - HTTP から HTTPS へのアップグレードに、308 を使うプラットフォームやプロキシ。