303リダイレクト(See Other)

303 See Otherリダイレクト、その中心となるPost/Redirect/Getパターン、307と異なりGETまたはHEADへ切り替える仕組み、302との差、GoogleとBingに303専用のSEOガイダンスがほとんどない理由を解説します。

初回公開:2026年7月2日 · 最終更新:2026年8月6日 · Advanced
言語

303 See Otherは一時的なHTTPリダイレクトで、元のメソッドに関係なく、クライアントに別のURLをGETまたはHEADで取得させます。フォームをPOSTで送信し、303でGET可能な結果ページへ移るPost/Redirect/Get(PRG)パターンの基礎です。更新しても元のPOSTを再送しません。元のメソッドを常に維持する307とは異なり、303はGETまたはHEADへ変更します。302とは異なり、メソッド処理が曖昧ではありません。SEOでは、URL移行のためのコードではなくウェブアプリのパターンなので、ほとんど意味を持ちません。Googleは303を302・307と同じ一般的な「一時的」3xxグループの一部としてのみ説明し、リダイレクト自体は移転先を正規URLにするシグナルではないとしています。GoogleもBingも303専用のガイダンスを公開していません。SEO目的のリダイレクトで使うことは通常なく、使った場合も302/307のように扱われます。

TL;DR — 303(HTTP「303 See Other」)は一時的なリダイレクトで、元のリクエストのメソッドに関係なく、クライアントに別のリソースをGETまたはHEADで取得させます。これがPost/Redirect/Get(PRG)パターンを支えます。POST303GETの結果ページという流れなので、更新してもフォームを再送せずページを再取得します。常にメソッドを維持する307や、メソッド処理が歴史的に曖昧だった302とは異なります。ページ間のSEOリダイレクトとしては非常にまれで、URL移行の道具ではなくウェブアプリケーションの仕組みです。**Googleは303を302・307と同じ一般的な「一時的」3xxグループの一員(弱い正規化シグナル)としてのみ説明し、303専用のガイダンスを公開していません。私が確認した範囲ではBingにもありません。**存在しない権威を作らず、語れることは少ないと明言しましょう。

303の実体

303は本文より前のレスポンスヘッダーで返されるHTTPステータスコードで、クライアントが次に取得すべきURLを指すLocationヘッダーを伴います。意味は狭く明確です。リクエストへの応答は別の場所にあるため、GETまたはHEADで取得してください。 Evidence for this claim RFC 9110 defines 303 See Other as directing the client to retrieve another resource identified by Location using GET or HEAD. Scope: HTTP semantics for 303 responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.4 — 303 See Other

このGETまたはHEADによる取得動作こそが、303を独立したコードとして存在させる理由であり、3種類の一時的なリダイレクトを分ける軸です。

303・302・307の違い:メソッドの問題

SEOの観点では3つとも「一時的」で、Googleは弱いシグナルとして同じグループにまとめます。ただし技術的には、クライアントがリダイレクトに従うとき、どのHTTPメソッドを使うかという問いへの答えが異なります。

コード意味リダイレクト後のリクエストメソッド
302 Found一時的これまでは曖昧 — 多くのクライアントがPOSTをGETへ切り替えましたが、仕様は保証しておらず挙動が分かれました
303 See OtherSee Other(一時的)GETまたはHEAD — 元のメソッドを意図的に変更します
307 Temporary Redirect一時的常に維持 — POSTはPOSTのまま、PUTはPUTのままです

303と307は、302をめぐる混乱を明確化するためにも導入されました。フォーム送信後にメソッドをGETへ固定したいなら303です。元のメソッドを引き継ぎ(たとえば新しいエンドポイントへPOSTを再発行し)たいなら307です。302はどちらにも決めきれない、歴史的に緩い中間にあたります。

もう1つ実務上の違いがあります。303のレスポンスは既定ではキャッシュ可能ではありませんが、301はキャッシュされます。ブラウザーやCDNが移転先を不適切にキャッシュする心配がある場合に重要ですが、303ならその懸念はありません。

Post/Redirect/Getパターンを正確に理解する

PRGは303の典型的な用途であり、エラー状態ではなく意図的で正しい設計パターンです。

  1. クライアントがPOSTでフォームを送信します(注文作成、コメント投稿、支払い実行など)。
  2. サーバーが副作用を処理し、GET可能な結果URL(領収書、確認ページ、更新済みリソース表示など)を指すLocationヘッダー付きの**303 See Other**を返します。
  3. クライアントがそのURLへGET(またはHEAD)で従います。ブラウザーの履歴と更新ボタンは安全で冪等な取得を指すため、再読み込みや戻る操作ではPOSTを再実行せず結果ページを再取得します。

通常のブラウザー更新ならフォームの再送を止められるため、「フォーム再送信を確認」というダイアログは出ません。ただし意味を正確に捉えましょう。PRGが防ぐのはその特定の再送経路であり、重複書き込みのすべてではありません。厳密な一度きりの処理も保証しません。再試行、タイムアウト、ダブルクリック、同時リクエストによって元のPOSTが2回実行される可能性は残るため、注文・支払い・コメント投稿など状態を変える処理には、重複が問題になる場合、冪等性キー、トランザクション境界、重複リクエスト検出などアプリ側の制御が必要です。REST APIでは、影響を受けたリソースの表現へクライアントを送るため、PUTDELETEの後に303を返すこともあります。

Googleは303をどう扱うか(語れることが少ない理由)

このテーマの中心となる正直な結論は、Googleに303専用のSEOガイダンスはないということです。Googleのリダイレクト文書では、302・307と並ぶ「一時的」リダイレクト表の1行として登場するだけです。Google自身の説明は明確で、クローラーはリダイレクトに従いますが、インデックス処理ではリダイレクト自体を移転先が正規URLであることのシグナルとして使いません。ただし別のシグナルで移転先がインデックスされることはあります。これは恒久的な301が提供する強い正規化とは異なり、範囲も狭いものです。 Evidence for this claim Google groups HTTP 303 with temporary redirects, follows it, and does not use it as a signal that the destination should become canonical. Scope: Google Search canonicalization behavior for server-side temporary redirects. Confidence: high · Verified: Google: Redirects and Google Search

John Mueller自身の非公式なリダイレクト解説は、さらに示唆的です。301、302、307を詳しく説明した後、303については短い脇注でこう述べています。「303?304.5?ほかの種類のリダイレクトに強い思いがあるなら、自由に使ってください。」実務上重要なのは続く点です。「コンテンツをどのURLでインデックスするかは判断する必要があるので、そこにも強い思いがあるなら、別の正規化シグナルを追加してください。」つまり、303を使うことになり、どのURLをインデックスさせるかが重要なら、リダイレクト種別だけに頼らず、rel="canonical"、内部リンク、サイトマップで補強します。

Googleの文書には、これらすべてのコードに共通する重要な注意もあります。同じように扱うとしても、「意味は異なることを忘れず、リダイレクトに適したステータスコードを使う」よう求めています。したがって「SEOでは気にされない」からといって恒久移転に303を付けてよいわけではありません。意図に合うコードを使い、他のクライアントにも正しく動作させてください。 “keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect.” (翻訳)「意味は異なることを忘れず、リダイレクトに適したステータスコードを使う、という注意です。」

Bingは303をどう扱うか

率直に言うと、Bing Webmaster Toolsヘルプの一般的なHTTPステータスコード資料を除き、Bingが303をどう扱うかという公開ガイダンスは見つけられませんでした。Fabrice CanelやMicrosoftの他の人物が303だけを取り上げた検証済みの発言もありません。これは「文書がない」という正当なデータポイントであり、空白を推測で埋めるべきではありません。BingがGoogleの説明と同じ挙動をすると仮定するつもりもありません。文書がないことは同一の扱いの証拠ではなく、Bingについて確定的な答えが必要なら、未解決の問いとして扱うべきです。

303はSEOで意味があるか? まれです。

正直な結論は、私が公開してきた説明とも一致します。303はページ移行の道具ではありません。*「11 Types Of Redirects & Their SEO Impact」*では、303について「要求したものに似たリソースへユーザーを送り、一時的なリダイレクトとして機能します。ブラウザーの戻るボタンでフォームが再送されるのを防ぐ用途が一般的です。SEO目的で303リダイレクトを使うことは通常ありませんが、使えば302/307と同じように扱われます」と説明しました。

自分の過去の説明にある正直な緊張関係も示しておきます。HTTPステータスコードとSEOへの影響では、303の扱いを「未定義……機能によって301または302として扱われる可能性がある」と説明しました。現在なら、より正確にこう整理します。Googleの文書は、303が302・307と同じ一時的で弱いグループに属すると明確にしています。実務で「未定義」に感じられたのは、303が実際には非常にまれで、Googleがエッジケースを公に明確化する必要がなかったからであり、隠れた強い挙動があるからではありません。文書化された既定(弱い/一時的、302・307と同じグループ)を基本にし、意外な結果は秘密のルールではなく、まれさの結果と考えてください。

意味を持つ可能性があるのは、フォームやチェックアウトが多いサイト、またはステータスコードのクロールで303が現れるAPI駆動アプリくらいです。その場合も通常は「意図どおり動いているので、そのままにする」が答えです。URLを意図的に移すなら303は使わず、恒久移転には301、一時移転には302を使い、メソッドを維持する必要がある場合は308307を選びます。

303と201・202・204の違い:書き込みに適したステータスを選ぶ

状態を変えるリクエストの後に使えるのは303だけではなく、習慣で選びやすいコードでもありません。ブラウザーのフォームフローではなくAPIなら、3つの2xxコードのほうが適することがよくあります。

  • 201 Created — リクエストが1つ以上のリソースを同期的に作成した場合です。主なリソースを特定するため、Locationがあればそこに、なければ対象URI自体を示します。作成が完了し、新しいリソースを別のGET往復なしでクライアントに直接渡したいときに使います。
  • 202 Accepted — リクエストを受け付けたものの処理がまだ終わっていない場合です(キュー処理や非同期ジョブ)。応答は意図的に確定させず、現在の状態を説明し、可能ならクライアントがポーリングできる状態監視先を示します。
  • 204 No Content — 処理は成功し、返すものが何もない場合です。本文もリダイレクトも不要で、応答はヘッダー部分で終わります。

303はこの3つとは異なる形です。書き込み後にクライアントが別途識別された結果リソースを取得すべき場合、つまりブラウザーのPRGパターンでよく使います。同期作成(201)、非同期受付(202)、単純な成功で追加処理がない場合(204)の代替にはなりません。それぞれがリダイレクトでは伝えられない固有の結果を示すからです。

よくある誤解

  • 「303はページが移動した、または壊れたことを意味する」 — いいえ。通常はPOST/PUT/DELETEの後に返す、メソッドを変更する意図的な応答です。「コンテンツ移転」やエラーのシグナルではありません。「ページが移動したためブラウザーがURLを見つけられない」と説明するサイトは、301/302や404と混同しています。
  • 「303は301のようにSEO価値を渡す」 — そうではありません。Googleの文書では302・307と同じ一時的で弱いグループです。
  • 「SEO担当者は一般的なリダイレクトに303を使うべきだ」 — そのためのコードではありません。フォーム/API向けの狭いパターンで、通常のURL移行に使うのは異例です。
  • 「Googleには303専用の詳細ルールがある」 — ありません。グループ内で一度触れられ、Muellerが「自由に使ってください」と肩をすくめた記録がすべてです。
  • 「303と302は技術的に同じだ」 — 検索上の扱いは同じグループでも技術的には異なります。303は後続リクエストをGETまたはHEADに変えますが、302のメソッド処理は歴史的に一貫していませんでした。だからこそ303と307が302を明確化するため導入されました。

このコードの位置づけ

303は一時的リダイレクト群の1つです。最も近いのは、同じグループにまとめられることが多い緩やかな一時リダイレクトの302と、メソッドを維持する反対側の307です(307はメソッドを維持し、303はGETまたはHEADへ切り替えます)。一方、301はランキングシグナルを実際に集約し、303には想定されていないURL移行を担う恒久リダイレクトです。全体像(恒久的な301/308、一時的な302/303/307、消滅を示す404/410、5xxエラー)は、このページが属するHTTPステータスコードのクラスターを参照してください。

303フローを安全に検証する

実際の環境で303を信頼する前に、盲目的に自動追従せず確認します。Locationの値自体(絶対か、相対か、解決可能か)を調べ、リダイレクトループや不要なチェーンがないかを確認し、後続リクエストが実際にGETまたはHEADを使っていること、最終応答のステータスと内容を確認します。フォームやAPIフローでは、元の書き込みが再実行されていないことをアプリケーションログでも確認してください。

注意点が1つあります。単一クライアントの挙動を普遍的なルールに一般化しないでください。ブラウザー、HTTPクライアント、フレームワークの自動追従は、製品・バージョン・設定によって異なります。特定のクライアント/バージョンの報告は、すべてに当てはまる証拠ではありません。URLレベルのチェッカーでリダイレクトと移転先の形は確認できますが、冪等性、資格情報の扱い、オリジン間セキュリティまでは検証できないため、実際の送信フローをテストする必要があります。

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.