Skip to content

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

リダイレクト

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

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

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

構造

行ごと

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

[source] [destination] [code?]
  • source string required

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

  • code number (default: 302) optional

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

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

ファイルごと

_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 のドキュメント を参照してください。

関連リソース

役に立ちましたか?