ルールは、フィルターと、そのフィルターに一致する受信リクエストに対して行うアクションを定義します。
ルール式は Rules language で定義します。
たとえば、4 つのルール(R1、R2、R3、R4)を持つ次のルールセットを考えます。ある受信リクエストに対して、最初の 2 つのルールの式がリクエストのプロパティに一致します。そのため、これらのルールのアクションが実行されます(それぞれ Execute と Log)。最初のルールのアクションはマネージドルールセットを実行するため、そのマネージドルールセット内のすべてのルールが評価されます。2 番目のルールのアクションは、現在のフェーズに関連するイベントをログに記録します。ルール 3 と 4 の式には一致しないため、それらのアクションは実行されません。どのルールもリクエストをブロックしないため、リクエストは次のフェーズへ進みます。
ルールは、特定の Cloudflare 製品を通じて追加機能を持てます。ルール式で使えるフィールドが増えたり、異なるアクションを実行したり、あるフェーズで追加の動作を設定したりできます。
ルールを評価するとき、Cloudflare はリクエスト / レスポンスのプロパティの値、または フィールド から得た派生値を、ルールのフィルター式で定義した値と比較します。
式全体が true になるとルールが一致し、Cloudflare はルールに設定した アクション を実行します。式が false になるとルールは一致せず、設定したアクションは適用されません。
一般的に、終了しないアクション では、同じ フェーズ 内のルールによる最後の変更が優先されます(後のルールは、前のルールによる変更を上書きできます)。一方、終了アクション(Block、Redirect、またはチャレンジアクションのいずれか)では、ルールの評価が止まり、そのアクションがすぐに実行されます。
たとえば、Redirect アクションを持つ複数のルールが一致した場合、Cloudflare は常に最初に一致したルールの URL リダイレクトを使います。また、異なる Cloudflare 製品(Single Redirects と Bulk Redirects)で URL リダイレクトを設定している場合、ルールが一致すれば、先に実行される製品が適用されます(この場合は Single Redirects)。
製品の実行順序については、フェーズ一覧 を参照してください。
ルールのフィルター式に true を使うと、現在の フェーズ(ゾーンまたはアカウント)で「すべての受信リクエストにルールを適用する」ことを意味します。
あるリクエスト / レスポンスのルールを評価しているあいだ、すべてのリクエストおよびレスポンス フィールド の値は、各フェーズ内で不変です。ただし、フェーズをまたぐとフィールド値は変わることがあります。
例:
- URL rewrite rule #1 がリクエストの URI パスまたはクエリ文字列を更新しても、URL rewrite rule #2 はこれらの先行する変更を考慮しません。
- リクエストヘッダー変換ルール #1 が HTTP リクエストヘッダーの値を設定しても、リクエストヘッダー変換ルール #2 はこの新しい値を読んだり評価したりできません。
- URL rewrite rule がリクエストの URI パスまたはクエリ文字列を更新すると、
http.request.uri、http.request.uri.*、http.request.full_uriフィールドは、http_request_transformフェーズ(URL Rewrite Rules が実行されるフェーズ)より後のフェーズで異なる値になります。