コンテンツにスキップ

リダイレクト

Cloudflare Pagesでリダイレクトを使用するには、プロジェクトの出力フォルダーに拡張子なしのプレーンテキストファイル_redirectsを作成してリダイレクトを宣言します。ビルド出力フォルダーはプロジェクト固有であるため、_redirectsファイルはリポジトリのルートディレクトリに常に存在するわけではありません。リダイレクトの変更はビルド時にウェブサイトに更新されるため、リダイレクトを更新するたびにファイルをコミットしてプッシュし、新しいビルドをトリガーすることを確認してください。

構造

行ごと

1行につき1つのリダイレクトのみを定義でき、次の形式に従う必要があります。そうでない場合は無視されます。

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

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

  • code デフォルト: 302

    • オプションのパラメータ

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

ファイルごと

プロジェクトは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 / 301302がデフォルトのステータスコードとして使用されます。
リライト(その他のステータスコード)いいえ/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
クッキーによるリダイレクトいいえ/\* /preview/:splat 302 Cookie=preview

リダイレクトとヘッダーの一致

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

スプラット

一致した場合、スプラット(アスタリスク、*)はすべての文字を貪欲に一致させます。URLには1つのスプラットのみを含めることができます。

一致した値は、リダイレクトの場所で:splatを使用して利用できます。

プレースホルダー

A placeholder can be defined with :placeholder_name. A colon (:) followed by a letter indicates the start of a placeholder and the placeholder name that follows must be composed of alphanumeric characters and underscores (:[A-Za-z]\w*). Every named placeholder can only be referenced once. Placeholders match all characters apart from the delimiter, which when part of the host, is a period (.) or a forward-slash (/) and may only be a forward-slash (/) when part of the path.

Similarly, the matched value can be used in the redirect values with :placeholder_name.

/movies/:title /media/:title

プロキシング

プロキシングは、サイト上の相対URLのみをサポートします。外部ドメインをプロキシすることはできません。

最初のリダイレクトのみが適用されます。たとえば、次の例では、/aへのリクエストは/bをレンダリングし、/bへのリクエストは/cをレンダリングしますが、/a/cをレンダリングしません。

/a /b 200
/b /c 200

プロキシングページは、検索エンジン最適化(SEO)に悪影響を及ぼす可能性があることに注意してください。検索エンジンは、重複コンテンツを提供するウェブサイトにペナルティを科すことがよくあります。検索エンジンにコンテンツの正規のソースを通知するLink HTTPヘッダーを追加することを検討してください。

たとえば、/about/faq/* /about/faqs 200_redirectsファイルに追加した場合、次のように_headersファイルに追加することをお勧めします:

/about/faq/*
Link: </about/faqs>; rel="canonical"

_redirectsの制限を超える

_redirectsファイルには、2,000の静的リダイレクトと100の動的リダイレクトの最大があり、合計で2,100のリダイレクトになります。バルクリダイレクトを使用して、2,100のリダイレクトルールの制限を超えるリダイレクトを処理します。

バルクリダイレクトを使用するには、バルクリダイレクトダッシュボードのドキュメントまたはバルクリダイレクトAPIのドキュメントを参照してください。

関連リソース