308恒久リダイレクト

308 Permanent Redirectとは何か、301と同じ恒久シグナルを示しながらHTTPメソッドとボディを保持する仕組み、GoogleとBingの扱い、実装時の注意点を解説します。

初回公開:2026年6月28日 · 最終更新:2026年8月22日 · Advanced
言語
このページには証拠シグナルが1件あります

308 Permanent Redirectは301と同じ恒久リダイレクトですが、移転先でリクエストメソッドを変更しないことを保証します。準拠クライアントは同じリクエストを繰り返すため、POSTのボディも通常は保持されます。GoogleとBingのSEO上の扱いは301と同じです。API、Webhook、フォーム、認証POSTなど、非GETリクエストを完全なまま移動する必要があるときに308を選び、通常のページ移動、HTTPS移行、ドメイン変更にはツール対応の広い301を既定にします。2026年のブラウザー対応は高い一方、CMSプラグイン、エッジUI、古いプロキシが301/302/307しか提供しない場合があるため、実際のワイヤー上のステータスを確認してください。

TL;DR — 308は恒久的で、メソッドを厳密に保持するリダイレクトです。301と同じ正規化シグナル(Googleの文書は*「Equivalent to 301」* (翻訳)301と同等」と説明)を持ちながら、新しいURLでクライアントがメソッドを変更しないことを保証します。準拠クライアントは新しいリクエストではなく同じリクエストを繰り返すため、ボディも一緒に送られます。HTTPには一時的なメソッド保持コード(307)が、恒久版より何年も先に存在しました。RFC 7538(2015年)がその空白を埋め、現在のRFC 9110は301自身の定義から308を直接参照しています。SEO上は2つを交換可能に扱えます(IllyesはGoogleが308を「統合」すると述べ、BingのCanelも同等性を確認しています)。APIやバージョン移行、Webhook URL、認証/フォームのPOSTフローなど、非GETリクエストを生かす必要がある場合に308を選びます。ただし仕様だけで判断せず、実際のクライアントでメソッドとボディの保持を確認してください。それ以外は301が既定です。2026年の308のブラウザー対応は強く、caniuseは現在およそ96,5 %以上を追跡していますが、RFC 9110自身は308を新しく、どこでも認識されるとは限らないとしています。一部のCMSプラグイン、エッジルールUI、古いプロキシは今も301/302/307しか提供しません。

308の機械的な意味

308 Permanent Redirectは301と同じ「このリソースは恒久的に新しいURLにある」というメッセージを運びます。そこに、301にはなかった1つの追加があり、クライアントは移転先でリクエストメソッドを変更してはなりません。クライアントは新しいリクエストを発行するのではなく同じリクエストを繰り返すので、仕様に準拠したクライアントならボディも一緒に移ります。これはメソッド保証の結果であり、別個に認証された約束ではありません。自分のクライアントとサーバーでエンドツーエンドに確認してください。MDNは、308をリダイレクトをまたいでリクエストメソッド(実際にはボディも)を変更しないコードとして説明しており、301ではそうならない可能性があります。

Ahrefsのリダイレクトガイド で使っている平易な説明は、「A 308 redirect is the same as a 301 redirect, except it retains the HTTP method of the original request, GET or POST, when performing the redirect.」 (翻訳)「308リダイレクトは301リダイレクトと同じだが、リダイレクト時に元のリクエストのHTTPメソッド(GETまたはPOST)を保持する」です。さらに短く、HTTPステータスコードのガイド では、「308 Permanent Redirect – Has the same functionality as a 301 redirect, except you can’t switch between POST and GET.」 (翻訳)「308恒久リダイレクトは301と同じ機能だが、POSTとGETを切り替えられない」と説明しています。 Evidence for this claim RFC 7538 defines 308 Permanent Redirect as a permanent move whose redirect follow-up must not change the request method. Scope: HTTP semantics for 308 responses. Confidence: high · Verified: IETF: RFC 7538 §3 — 308 Permanent Redirect

具体例で違いを見てみましょう。クライアントがJSONボディ付きでPOSTを/api/ordersへ送るとします。

POST /api/orders HTTP/1.1
Host: shop.example.com
Content-Type: application/json

{ "sku": "A-100", "qty": 2 }

そのエンドポイントが301で応答し、クライアントが歴史的な「GETへ切り替えてよい」という許可に従うと、新URLには空のGETとしてリクエストが届き、ボディが消えて注文が失われる可能性があります。308ならクライアントは新URLでPOSTを繰り返さなければなりません。準拠クライアントはボディも一緒に運ぶので注文は通りますが、自分のクライアントとサーバーログで確認してください(Scriptsタブを参照)。どの環境でも普遍的にそうなると仮定しないでください。これが実務上の違いのすべてで、元のリクエストが単純なGETではないときだけ現れます。

なぜ308が存在するのか — 仕様の経緯

多くの解説が飛ばす部分ですが、このコードを理解する最も明快な方法です。

307が先でした。 HTTPにはすでに、一時的でメソッドを保持するリダイレクト、つまり307がありました。恒久的な対応物が存在するよりずっと前です。元の中核仕様(RFC 7231)は307の恒久版を定義していませんでした。そのため、一時的な「メソッドを保持する」コードと、恒久的だが「メソッドを変更してよい」コード(301)はあっても、恒久的な「メソッドを保持する」コードはありませんでした。

RFC 7538が空白を埋めました。 308は、欠けていた恒久版307として追加されました。最初は実験的な RFC 7238 (2014年6月)、その後 RFC 7538 (2015年4月)として標準化されました。301の置き換えではなく、実際に存在した穴を埋めるものです。

現行仕様は直接308を指します。 RFC 9110 は現在のHTTPセマンティクス仕様で、301に組み込まれた曖昧さを今も記録し、自身の301定義の中で308を解決策として示しています。「For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request… If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.」 (翻訳)「歴史的な理由から、ユーザーエージェントは後続リクエストでPOSTからGETへメソッドを変更してもよい。この動作が望ましくない場合は、308(Permanent Redirect)ステータスコードを代わりに使えます。」この一文が、権威ある仕様から見た308の存在理由です。308自身の節では、「is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.」 (翻訳)「兄弟コードよりはるかに新しく(2014年6月)、そのためどこでも認識されるとは限らない」と付記しています。

つまり301のPOSTからGETへの動作はバグではありません。仕様に組み込まれた「歴史的な理由による」許可で、308はそれを避けるために公式に認められた方法です。

301と308 — 実務上の違いを1つの表で

単純なGETリクエストボディ付きPOST/PUT/DELETE
301308と同じように動作GETへ格下げされる可能性があり、ボディが失われる
308301と同じように動作メソッドとボディの反復が保証される
SEOシグナル同じ(恒久的、集約)同じ(恒久的、集約)

要点は、圧倒的多数のリダイレクト、つまり単純なGETでは、301と308はまったく同じ動作をするということです。保証が意味を持つのは、ボディを伴う非GETメソッドが関係するときだけです(完全な比較は専用の301と308の比較記事を参照)。

GoogleはSEO上、308を301と同じように扱うか

はい、明確に同じで、文書にも記載されています。GoogleのHTTPステータスコード文書 は、301を「Googleが*「use[s]… as a strong signal that the redirect target should be processed」* (翻訳)「対象を処理すべきだという強いシグナルとして使う」と説明するリダイレクト」とし、308は単に*「Equivalent to 301」* (翻訳)301と同等」と記載しています。さらに、「While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.」 (翻訳)「Googleはこれらのコードを同じように扱うが意味は異なる。ほかのクライアント(電子書籍リーダーや別の検索エンジンなど)も恩恵を受けられるよう、リダイレクトに適したコードを使うべきだ」と注意します。平たく言えば、「間違った」コードを使ってもGoogleに罰せられませんが、他のソフトウェアがこの違いに依存するため、リクエストに正しいコードを使うべきです。

Evidence for this claim Google treats 308 as equivalent to 301 for Search and groups both as permanent redirects. Scope: Google Search processing; the two status codes remain semantically different for HTTP clients. Confidence: high · Verified: Google: HTTP status codes and Search Google: Redirects and Google Search

Googleのリダイレクト文書 は、2つのコードを同じ推奨層に置いています。「The 301 and 308 status codes mean that a page has permanently moved to a new location.」 (翻訳)301308のステータスコードは、ページが恒久的に新しい場所へ移動したことを意味する」と説明します。サイト移転のガイダンスも、308を301の後付けではなく明示的に挙げ、恒久移転には「301や308など」の恒久HTTPリダイレクトを使うよう推奨しています。

この同等性がいつも文書化されていたわけではないことも知っておく価値があります。Gary IllyesはGoogleが内部で308を301に統合すると述べ、Search Engine Roundtableの報道は、非公式な補足がついに頼れる公式文書になった瞬間として説明しています。数年前に「本当に文書化されているのか」と尋ねたサイト所有者が慎重だったのは妥当でしたが、基礎動作自体は変わっていません。Googleと担当者の正確な文言を確認したいなら、検証済みの引用と深いリンクをQuotesタブで確認してください。

Bingは308を301と同じように扱うか

はい。BingにはGoogleのように308を詳しく説明する専用文書ページはありませんが、MicrosoftのFabrice Canelが2024年9月、Search Engine Roundtableの報道 でX上の発言として直接確認しました。Bingは308リダイレクトを301リダイレクトと同じように扱います。これがBingについての権威ある声明です。逐語引用はQuotesタブを参照してください。

実際に308を使う場面

ここに308単独の根拠があります。ほぼいつも、非GETリクエストが関係します。

APIエンドポイントとバージョン移行。 /v1//v2/へ移す、またはAPIホストを移すのが典型例です。クライアントはPOST/PUT/PATCH/DELETEと実際のボディでこれらのエンドポイントを呼び出します。308はメソッドとペイロードがホップを越えて残ることを保証しますが、301では静かな格下げが起こり、リクエストが行き場を失う可能性があります。

POST中心のサイト移転。 チェックアウト、ログイン/認証エンドポイント、フォームの送信先はすべてPOSTデータを送ります。移転中にそれらのURLが変わるなら、301では失われるかもしれない送信内容を308が保持します。

Webhook URLの変更。 別サービスが移動中のWebhook URLへPOSTするとき、308はそのHTTPクライアントにボディを保持したまま新しいアドレスへ再POSTさせます。Webhookの受け手が必要とする動作そのものです。

共通するのは、ボディを失ったりメソッドが静かにGETへ落ちたりすると機能が壊れる場所では、SEOの価値を少し並べ替えるためではなく308を使うということです。

これらのどれかを切り替える前に、単なるステータスコードではなく統合テストとして確認してください。

  • ステージング環境の新しいエンドポイントへ、実際のメソッドとペイロードを再送する。
  • 認証ヘッダーやCookieを引き継ぐべきか確認し、実際に引き継がれることを点検する。
  • 元のリクエストが冪等でない場合(注文を作るPOSTなど)は、リダイレクトのホップ中に副作用が二重にならないか監視する。
  • ボディだけでなく、クエリ文字列とContent-Typeヘッダーも残ることを確認する。
  • Webhook送信元、API SDK、ブラウザーなど実際のクライアントが、古いエンドポイントを廃止する前に308を自動追従することを検証する。すべてのHTTPクライアントが既定でそうするわけではありません。

301が今も現実的な既定値である場面

単純なGETであるものはすべて、301が妥当な既定値です。

  • 通常のコンテンツ/ページURLの変更。
  • HTTP → HTTPSの移行。
  • ドメイン変更と標準的なサイト移転。
  • 末尾スラッシュとwww/非wwwの正規化。

ここではリクエストが単純なGETなので、308の保証は何も買いません。301は普遍性で勝ち、どちらを選んでもSEO上のコストはありません。ランキング上昇を狙って既存の301を308へ一括移行しないでください。その利点は存在しません。Ahrefsのリダイレクトガイド のリダイレクト選好階層でも、308と301はメタリフレッシュ、JavaScript、その他の回避策より上の最上位層に並ぶ同格です。階段ではありません。

採用状況とサポートの注意 — 2026年に本当にリスクになるもの

ブラウザー対応は、かつてほど実務上のリスクではありません。 caniuse の現在の追跡では、308は世界全体でおよそ96,5 %以上に対応しています。今日の数値は変動するため、ライブ表で確認してください。目立つ非対応は、何年も前に廃れたブラウザー、つまりIE11より前、古いChrome/Firefox/Safari、旧Android Browserに集中しています。「IE11は308で失敗する」という古い注意書きがまだ見えるなら、主流トラフィックには古すぎます。

現在の注意点はツールです。 2026年現在の正直な空白は、すべての層が308の選択肢を公開しているわけではないことです。一部のCMSリダイレクトプラグイン、CDN/エッジのリダイレクトルールUI、古いリバースプロキシやロードバランサーは、301/302/307しか選べません。308を使う前に、実際にリダイレクトを配信する層が、静かに格下げせず308を出せることを確認してください。Scriptsタブにはワイヤー上の実ステータスコードを確認する1行があります。RFC 9110自身の「はるかに新しく、どこでも認識されるとは限らない」という注意は、ブラウザーだけに限定されません。308の一般的な展開上の注意であり、2026年には主にブラウザーではなくツールに現れます。ただし仕様の基準として読む価値があります。

非標準の脚注:「308 Resume Incomplete」

308がまだ新しいコードであることを示す奇妙な点があります。実際には308はリダイレクトコードだけではありません。Google DriveのアップロードAPIは、チャンク分割したアップロードが止まり、クライアントが再開すべきことを示す「Resume Incomplete」というまったく別の意味で308を再利用します。John Mueller自身がこれを指摘し(Quotesタブを参照)、MDNも同じ非標準用途を記録しています。308をリダイレクトとして使う場合の意味は変わりませんが、由緒ある301より新しく、文化的に定着していないステータスコードであることを示すよい例です。

リダイレクトチェーンとホップも同じように適用される

ここまでの内容はリダイレクトチェーンの仕組みを変えません。Googleのクローラーは既定で最大10ホップまで追従しますが、これは既定値であって普遍的な定数ではありません。Google自身の文書は、URL Inspectionツールのように製品によってはリダイレクトをまったく追従しない場合があると記載しているため、10を永遠に固定された数として扱わず、現在のGoogle文書を確認してください。301sのホップでも308sのホップでも既定の上限は同じです。古いAPIパスが着地前に2回ホップするなど、リダイレクトを積み重ねているなら、可能な範囲でチェーンを1ホップに畳み、ループを避ける同じ衛生管理が必要です。仕組みは専用のリダイレクトチェーン記事を参照してください。

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.