规则定义过滤器,以及对匹配该过滤器的传入请求执行的操作。
规则表达式使用 Rules language 定义。
例如,考虑以下包含四条规则(R1、R2、R3 和 R4)的规则集。对于某个传入请求,前两条规则的表达式与请求属性匹配。因此,这些规则的操作会运行(分别为 Execute 和 Log)。第一条规则的操作会执行托管规则集,这意味着该托管规则集中的每条规则都会被评估。第二条规则的操作会记录与当前阶段关联的事件。规则 3 和 4 的表达式不匹配,因此其操作不会运行。由于没有规则阻止该请求,请求会进入下一阶段。
通过特定的 Cloudflare 产品,规则可以具备额外功能。您可能拥有更多可用于规则表达式的字段、可执行不同操作,或在给定阶段配置额外行为。
评估规则时,Cloudflare 会将请求/响应属性的值或派生值(通过 字段 获得)与规则过滤表达式中定义的值进行比较。
如果整个表达式的求值结果为 true,则规则匹配,Cloudflare 会触发规则中配置的 操作。如果表达式求值结果为 false,则规则不匹配,不会应用其配置的操作。
一般来说,对于非终止动作,同一阶段中规则所做的最后一次更改将生效(后续规则可以覆盖之前规则所做的更改)。但对于终止动作(Block、Redirect 或任一质询动作),规则评估将停止,并立即执行该动作。
例如,如果多个带有 Redirect 动作的规则匹配,Cloudflare 将始终使用第一条匹配规则的 URL 重定向。此外,如果您使用不同的 Cloudflare 产品(单次重定向和批量重定向)配置 URL 重定向,在规则匹配的情况下,最先执行的产品将生效(此处为单次重定向)。
有关产品执行顺序,请参阅阶段列表。
当您使用 true 作为规则过滤表达式时,表示“在当前 阶段 级别将规则应用于每个传入请求”,该级别可以是 zone 或账户。
在对给定请求/响应评估规则时,所有请求和响应 字段 的值在每个阶段内是不可变的。但是,字段值可能在不同阶段之间发生变化。
例如: