リダイレクト
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=:nameCloudflareは現在、高度なリダイレクトに対する限られたサポートを提供しています。将来的にはより多くのサポートが追加される予定です。
| 機能 | サポート | 例 | ノート |
|---|---|---|---|
| リダイレクト(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 | |
| クッキーによるリダイレクト | いいえ | /\* /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ファイルには、2,000の静的リダイレクトと100の動的リダイレクトの最大があり、合計で2,100のリダイレクトになります。バルクリダイレクトを使用して、2,100のリダイレクトルールの制限を超えるリダイレクトを処理します。
バルクリダイレクトを使用するには、バルクリダイレクトダッシュボードのドキュメントまたはバルクリダイレクトAPIのドキュメントを参照してください。