3xx コードは、要求したリソースを完全に得るために、HTTP クライアントが別の対応を取る必要があることを示すレスポンスの分類です。
リダイレクト先は、次のいずれかの方法で指定します。
- レスポンスの
Locationヘッダーフィールド。自動リダイレクトに使えます。 - レスポンスのペイロード。正しい場所へのハイパーリンクを含めることもできます。
300 Multiple Choices ステータスは、要求したリソースに複数の選択肢があり、クライアントが 1 つを選べることを示します。
詳細は RFC 7231 ↗ を参照してください。
このステータスは、リソースが複数の表現や形式で提供されるときに使います。例は次のとおりです。
- 動画を複数の形式(例: MP4、AVI)で提供する。
- 異なる拡張子 ↗や圧縮方式のファイル一覧を示す。
- 複数の意味を持つ語について、語義の曖昧性解消 ↗の選択肢を示す。
レスポンスには、推奨オプションを指す Location ヘッダーを付けるか、利用可能な選択肢へのハイパーリンクを含むペイロードを付けて、クライアントが判断できるようにします。
Cloudflare は、性能とユーザー体験を優先するため、自動リダイレクトでは 300 Multiple Choices レスポンスを通常バイパスします。
301 Moved Permanently ステータスは、要求したリソースに新しい恒久的な URI が割り当てられたことを示します。以降の参照では、レスポンスに含まれる URI のいずれかを使ってください。
詳細は RFC 7231 ↗ を参照してください。
このステータスは、次のことをクライアントに伝えるときに使います。
- リソースが新しい URI へ恒久的に移動した。
- 検索エンジンはインデックスを新しい URI に更新する。
- ブックマークなどの保存済み参照を更新する。
レスポンスには、通常、新しい URI を示す Location ヘッダーが付きます。これにより、大半の User-Agent が自動リダイレクトできます。
Cloudflare は、オリジンサーバーへ問い合わせなくても 301 Moved Permanently レスポンスを生成できます。詳細は Redirect Rules を参照してください。
302 Found ステータスは一時リダイレクトとも呼ばれ、要求したリソースが一時的に別の URI にあることを示します。恒久的な移動を示す 301 Moved Permanently とは異なり、302 Found は一時利用を想定しています。
User-Agent は Location ヘッダーをたどってリソースを取得できますが、301 Moved Permanently のときのように現在の URI を置き換えてはいけません。
詳細は RFC 7231 ↗ を参照してください。
このステータスは、次のときに使います。
- メンテナンスやアップグレードのあいだ、トラフィックを一時的に振り向ける。
- 保存済み参照を変えずに、代替リソースへ案内する。
- 恒久的な変更をせずに、リソースの異なる版を A/B テストする。
Cloudflare はこれらのレスポンスを生成できるため、オリジンサーバーへリクエストを送る必要はありません。リダイレクトの生成については Redirect Rules を参照してください。
303 See Other ステータスは、クライアントが別の URI のリソースを GET リクエストで取得すべきことを示します。301 Moved Permanently とは異なり、リダイレクト先のリソースは、元の要求リソースと同等である必要はありません。
詳細は RFC 7231 ↗ を参照してください。
303 ステータスは、POST または DELETE リクエストへの応答として、オリジンサーバーがデータを正常に処理したことと、適切なキャッシュ動作を示すときに使います。
最初の 303 レスポンス自体はキャッシュできませんが、続く GET リクエストへのレスポンスは、別の URI に紐づくためキャッシュできます。
Cloudflare では Redirect Rules で 303 リダイレクトを設定でき、エッジでこれらのレスポンスを処理できます。オリジンサーバーへの不要なリクエストを避け、性能が向上します。
304 Not Modified ステータスは、要求したリソースがクライアントのキャッシュにあり、有効であることを示します。オリジンサーバーは、クライアントの前回リクエスト以降にリソースを変更していません。クライアントは、オリジンサーバーへ再接続せずにキャッシュを使えます。304 レスポンスを受け取ったキャッシュの要件は、RFC 7234 の Section 4.3.4 ↗ で定義されています。
詳細は RFC 7232 ↗ を参照してください。
304 Not Modified レスポンスは、クライアントが条件付きの GET または HEAD リクエストでキャッシュを検証するときに使います。サーバーはキャッシュ版が最新であることを確認し、クライアントはリソースを再ダウンロードせずに使えます。不要なデータ転送を減らし、効率が上がります。
304 レスポンスの内容は次のとおりです。
- メッセージボディなし: 304 レスポンス自体には、画像やウェブページ本文などの実リソースは含まれません。キャッシュ版が有効であることだけを伝えます。
- 必須ヘッダー: レスポンスには、キャッシュの扱いをクライアントに伝える重要なメタデータ(
Cache-Control、Content-Location、Date、ETag、Expires、Varyなど)が付きます。これらのヘッダーは、200 OK でリソースを返すときと同じものです。
古いリクエストをオリジンで再検証する必要があるとき、Cloudflare は 304 レスポンスを送り、キャッシュ版がオリジン版と一致することを伝えます。レスポンスには CF-Cache-Status: REVALIDATED ヘッダーが付き、Cloudflare は If-Modified-Since ヘッダーで版を検証します。詳細は ETag Headers を参照してください。
このステータスコードは、リクエストをオリジンサーバーへ直接送らず、Location ヘッダーで指定したプロキシ経由で送る必要があることを示します。ただし、セキュリティ上の理由から、305 Use Proxy ステータスコードは非推奨です。
このステータスコードは、以降のリクエストを指定したプロキシ経由で送るべきことを示します。ただし、306 Switch Proxy ステータスコードは非推奨で、現在は使われていません。
307 Temporary Redirect ステータスは、要求したリソースが一時的に別の URI(Location ヘッダーで指定)へ移動したことを示します。302 リダイレクトとは異なり、自動でリダイレクトをたどるときも、元のリクエストメソッド(例: GET または POST)を変えてはいけません。リソースの場所が一時的に変わっても、リクエストの意図した動作が崩れないようにします。User-Agent は Location ヘッダーで自動リダイレクトできますが、以降のリクエストのために元の URI を置き換えてはいけません。
詳細は RFC 7231 ↗ を参照してください。
307 ステータスは、サーバーのメンテナンスやアップグレードのあいだリソースを一時移転し、元のリクエストメソッドを保つときに使えます。プロモーション、キャンペーン、特別イベント向けの一時 URL へトラフィックを案内し、以降のリクエストでは元の URI を変えない用途にもよく使います。
Cloudflare は 307 Temporary Redirect レスポンスを効率よく処理でき、オリジンサーバー側の変更なしに一時リダイレクトできます。Redirect Rules で設定します。
308 Permanent Redirect ステータスは、要求したリソースが新しい URI(Location ヘッダーで指定)へ恒久的に移動したことを示します。301 リダイレクトとは異なり、自動でリダイレクトをたどるときも、元のリクエストメソッド(例: GET、POST)を変えてはいけません。User-Agent は Location ヘッダーでリダイレクトをたどり、以降のリクエストでは元の URI を新しい URI に置き換えてください。
詳細は RFC 7538 ↗ を参照してください。
308 Permanent Redirect ステータスは、リソースの恒久的な移転、API のバージョンアップ、ドメインやパスの移行、リダイレクト時のメソッド維持によく使います。新しい URI へリンク評価(リンクエクイティ)を引き継ぐため、SEO にも役立ちます。
Cloudflare は 308 Permanent Redirect を効率よく処理し、リクエストの整合性を保ったままリダイレクトできます。Redirect Rules で設定します。