

**引入全新的主机体验 Amazon WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 Amazon WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.amazonaws.cn/waf/latest/developerguide/working-with-console.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# OR 规则语句
<a name="waf-rule-statement-type-or"></a>

OR 规则语句将嵌套语句与 OR 逻辑相结合，因此其中一个嵌套语句必须匹配 OR 语句才能进行匹配。这至少需要两个嵌套语句。

例如，如果您要阻止来自特定国家/地区或包含特定查询字符串的请求，则可以创建一个 OR 语句，并在其中嵌入该国家/地区的地理匹配语句和查询字符串的字符串匹配语句。

相反，如果您想阻止*不是*来自特定国家/地区或包含特定查询字符串的请求，则可以修改之前的 OR 语句，将地理匹配语句嵌套在 NOT 语句中更低的一个级别。此级别的嵌套要求您使用 JSON 格式，因为控制台仅支持一个级别的嵌套。

## 规则语句特征
<a name="or-rule-statement-characteristics"></a>

**嵌套**：您可以嵌套此语句类型。

**WCUs**— 取决于嵌套语句。

## 在何处查找规则语句
<a name="or-rule-statement-where-to-find"></a>
+ 控制台上的**规则生成器** – 对于**如果有请求**，选择**至少匹配其中一条语句 (OR)**，然后填写嵌套语句。
+ **API**：[OrStatement](https://docs.amazonaws.cn/waf/latest/APIReference/API_OrStatement.html)

**示例**  
下表显示了使用 OR 来组合另外两个语句的情况。如果其中一个嵌套语句匹配，则 OR 语句是匹配的。

```
{
  "Name": "neitherOfTwo",
  "Priority": 1,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "neitherOfTwo"
  },
  "Statement": {
    "OrStatement": {
      "Statements": [
        {
          "GeoMatchStatement": {
            "CountryCodes": [
              "CA"
            ]
          }
        },
        {
          "IPSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777"
          }
        }
      ]
    }
  }
}
```

使用控制台规则可视化编辑器，您可以在逻辑规则语句下嵌套大多数可嵌套语句，但不能使用可视化编辑器嵌套 OR 或 AND 语句。要配置这种类型的嵌套，您需要以 JSON 格式提供规则语句。例如，以下 JSON 规则列表包括嵌套在 AND 语句中的 OR 语句。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```