Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

リダイレクト

最終更新 Markdown で表示Agent セットアップ

Cloudflare Pages でカスタムリダイレクトを適用するには、拡張子なしのプレーンテキストファイル _redirects をプロジェクトの静的アセットディレクトリに置きます。このファイル自体は静的アセットとして配信されません。Cloudflare Pages が解析し、ルールを静的アセットのレスポンスに適用します。

フレームワークを使っている場合、public/static/ というディレクトリがあることが多く、ここには favicon、robots.txt、サイトマニフェストなど、デプロイ可能なアセットが入ります。これらのファイルはビルド時に最終的な出力ディレクトリへコピーされるため、_redirects ファイルを置くのに適しています。フレームワークを使っていない場合は、_redirects ファイルを ビルド出力ディレクトリ に直接置けます。

構造

行ごと

1 行に定義できるリダイレクトは 1 件です。次の形式に従わない行は無視されます。

[source] [destination] [code?]
  • source string 必須

    • ファイルパスです。
    • ワイルドカード(*プレースホルダー を含められます。
    • フラグメントはブラウザーが評価し、Cloudflare のネットワークでは評価されないため、source 内のフラグメントは評価されません。
  • destination string 必須

  • code number (デフォルト: 302) 任意

    • 任意のパラメーターです。

# で始まる行はコメントとして扱います。

ファイルごと

_redirects ファイルは、静的リダイレクト 2,000 件と動的リダイレクト 100 件、合計 2,100 件までです。各リダイレクト宣言は 1,000 文字までです。

_redirects ファイルでは次の点に注意します。

  • リダイレクトの順序が重要です。同じ source パスに複数のリダイレクトがある場合、いちばん上のリダイレクトが適用されます。
  • 静的リダイレクトは動的リダイレクトより前に置きます。
  • 受信リクエストに一致するアセットがあるかどうかに関係なく、リダイレクトは常に実行されます。

複数のリダイレクトを含む完全な例は次のとおりです。

/home301 / 301
/home302 / 302
/querystrings /?query=string 301
/twitch https://twitch.tv
/trailing /trailing/ 301
/notrailing/ /nottrailing 301
/page/ /page2/#fragment 301
/blog/* https://blog.my.domain/:splat
/products/:code/:name /products?code=:code&name=:name

高度なリダイレクト

Cloudflare は現在、高度なリダイレクトを限定的にサポートしています。

機能 対応 メモ
リダイレクト(301、302、303、307、308) /home / 301 デフォルトのステータスコードは 302 です。
リライト(その他のステータスコード) /blog/* /blog/404.html 404
スプラット /blog/* /posts/:splat スプラット を参照してください。
プレースホルダー /blog/:year/:month/:date/:slug /news/:year/:month/:date/:slug プレースホルダー を参照してください。
クエリパラメーター /shop id=:id /blog/:id 301
プロキシ /blog/* /news/:splat 200 プロキシ を参照してください。
ドメインレベルのリダイレクト workers.example.com/* workers.example.com/blog/:splat 301
国または言語によるリダイレクト / /us 302 Country=us
Cookie によるリダイレクト /\* /preview/:splat 302 Cookie=preview

リダイレクトとヘッダーの照合

リダイレクトはヘッダーより先に実行されます。両方のファイルのルールに一致するリクエストでは、リダイレクトが優先されます。

スプラット

照合時、スプラット(アスタリスク、*)はすべての文字に貪欲に一致します。URL に含められるスプラットは 1 つだけです。

一致した値は、リダイレクト先で :splat として使えます。

プレースホルダー

プレースホルダーは :placeholder_name で定義できます。コロン(:)のあとに英字が続くとプレースホルダーの開始です。続くプレースホルダー名は英数字とアンダースコアで構成します(:[A-Za-z]\w*)。名前付きプレースホルダーは、それぞれ 1 回だけ参照できます。プレースホルダーは区切り文字以外のすべての文字に一致します。ホストの一部である場合、区切り文字はピリオド(.)またはスラッシュ(/)です。パスの一部である場合は、スラッシュ(/)のみです。

同様に、一致した値は :placeholder_name を使い、redirect の値でも利用できます。

/movies/:title /media/:title

プロキシ

プロキシは、サイト上の相対 URL のみ対応しています。外部ドメインはプロキシできません。

ファイル内で適用されるのは最初のリダイレクトだけです。次の例では、/a へのリクエストは /b を、/b へのリクエストは /c をレンダリングします。ただし /a/c をレンダリングしません。

/a /b 200
/b /c 200

_redirects の制限を超える

_redirects ファイルは、静的リダイレクト最大 2,000 件と動的リダイレクト最大 100 件、合計 2,100 件までです。_redirects の 2,100 件の制限を超えるリダイレクトは Bulk Redirects で扱います。

Bulk Redirects の使い方は、Bulk Redirects のダッシュボードドキュメント または Bulk Redirects API ドキュメント を参照してください。

関連リソース

役に立ちましたか?