コンテンツにスキップ

ルール

ルールは、フィルターと、そのフィルターに一致する受信リクエストに対して実行するアクションを定義します。ルールフィルターのはルールの範囲を定義し、ルールのアクションは式に一致した場合に何が起こるかを定義します。ルールフィルターの式は、ルール言語を使用して定義されます。

例えば、次のルールセットには4つのルール(R1、R2、R3、R4)が含まれています。特定の受信リクエストに対して、最初の2つのルールの式がリクエストのプロパティに一致します。したがって、これらのルールのアクションが実行されます(それぞれExecuteLog)。最初のルールのアクションは管理されたルールセットを実行し、これは管理されたルールセット内のすべてのルールが評価されることを意味します。2番目のルールのアクションは、現在のフェーズに関連するイベントをログに記録します。ルール3と4の式には一致がないため、それらのアクションは実行されません。どのルールもリクエストをブロックしないため、リクエストは次のフェーズに進みます。

ルール実行シナリオの例。4つのルールを持つルールセットを定義し、最初のルールが管理されたルールセットを実行します。

ルールは、特定のCloudflare製品を通じて追加の機能を持つことができます。ルール式に利用可能なフィールドが増えたり、異なるアクションを実行したり、特定のフェーズで追加の動作を構成したりすることができます。

ルール評価

ルールを評価する際、Cloudflareはリクエスト/レスポンスプロパティまたは派生値(フィールドを通じて取得)をルールのフィルター式で定義された値と比較します。

式全体がtrueに評価されると、ルールが一致し、Cloudflareはルールに設定されたアクションをトリガーします。式がfalseに評価されると、ルールは一致せず、その設定されたアクションは適用されません。

Generally speaking, for non-terminating actions the last change made by rules in the same phase will win (later rules can overwrite changes done by previous rules). However, for terminating actions (Block, Redirect, or one of the challenge actions), rule evaluation will stop and the action will be executed immediately.

For example, if multiple rules with the Redirect action match, Cloudflare will always use the URL redirect of the first rule that matches. Also, if you configure URL redirects using different Cloudflare products (Single Redirects and Bulk Redirects), the product executed first will apply, if there is a rule match (in this case, Single Redirects). Refer to the Phases list for the product execution order.

trueをルールフィルター式として使用すると、これは「現在のフェーズレベルで、すべての受信リクエストにルールを適用する」ことを意味します。これはゾーンまたはアカウントのレベルです。

ルール評価中のフィールド値

特定のリクエスト/レスポンスのルールを評価する際、すべてのリクエストおよびレスポンスのフィールドの値は各フェーズ内で不変です。ただし、フェーズ間でフィールドの値は変わる可能性があります。

例えば:

  • URL書き換えルール #1がリクエストのURIパスまたはクエリ文字列を更新した場合、URL書き換えルール #2はこれらの以前の変更を考慮しません。
  • HTTPリクエストヘッダー変更ルール #1がリクエストヘッダーの値を設定した場合、HTTPリクエストヘッダー変更ルール #2はこの新しい値を読み取ったり評価したりできません。
  • URL書き換えルールがリクエストのURIパスまたはクエリ文字列を更新した場合、http.request.urihttp.request.uri.*、およびhttp.request.full_uriフィールドは、http_request_transformフェーズ(URL書き換えルールが実行される場所)以降のフェーズで異なる値を持ちます。