## 说明
这里将用自带的规则进行规则配置的讲解
## 常见的二阶匹配
先看一个配置例子,这里先不管 `uri` 和 `hostname` 这个key,只关注匹配规则的写法。
`[参数1,参数2,参数3]`
![](https://img.kancloud.cn/1e/9c/1e9c42f5a2cf2fd089a2cb037c22bb8b_748x532.png)
解释:
* 参数1:匹配的内容【类型可以是字符串、数组、字典、正则字符串... 具体是有第二个参数来决定】
* 参数2:匹配符【标记使用哪种方式进行匹配(字符串等于、包含、正则匹配、数组、字典...)】
具体有哪些匹配方式,参考[匹配方式说明](https://www.kancloud.cn/openstar/install/1136678),一定要仔细阅读,在来配置自己想要的规则,可以优化好自己的规则,提高其匹配的性能(**能不用正则就不用正则**)
* 参数3:取反标记【可以没有,默认是false】
当我们的匹配符用了`等于`这个匹配方式时,取反标记为`true`,那么规则匹配就取它的反,匹配符则会解读为`不等于`,这个使用有点不好理解,但是多调试多测试几次就知道具体是什么回事
## table类型的三阶匹配
先看一个配置例子,匹配规则的写法:`[参数1,参数2,[子参数1,子参数2],参数4]`
![](https://img.kancloud.cn/9d/6e/9d6e506a14c671b8b248248fe134fda1_748x477.png)
我们在来看一下比较特殊的 header 的内容
![](https://img.kancloud.cn/48/1b/481b54515565e7ec8a4bafda36d4171c_1098x372.png)
这里大家可以看到,`accept-language`有2个值,我们在写规则匹配的时候,取哪一个值呢?
解释:
* 参数1:匹配的内容【类型可以是字符串、数组、字典、正则字符串... 具体是有第二个参数来决定】
* 参数2:匹配符【标记使用哪种方式进行匹配(字符串等于、包含、正则匹配、数组、字典...)】
具体有哪些匹配方式,参考[匹配方式说明](https://www.kancloud.cn/openstar/install/1136678),一定要仔细阅读,在来配置自己想要的规则,可以优化好自己的规则,提高其匹配的性能(**能不用正则就不用正则**)
* 参数3:[子参数1,子参数2]
* 子参数1:需要匹配的`key`名称;如上面这个特别的 `accept-language`
* 子参数2:匹配的值是数组时,取第几个位置,默认是取最后一个
any --- 表示取任意一个(会匹配多次) ;end --- 匹配最后一个 ;%n% --- 匹配指定序号的值,没有则取最后一个
* 参数4(最后一个参数):取反标记【可以没有,默认是false】
当我们的匹配符用了`等于`这个匹配方式时,取反标记为`true`,那么规则匹配就取它的反,匹配符则会解读为`不等于`,这个使用有点不好理解,但是多调试多测试几次就知道具体是什么回事
**可以看到,这里的规则匹配是我们常用的二阶匹配的一个扩展**
## from类型的table的三阶匹配
先看一个配置例子,匹配规则的写法:`[参数1,参数2,[子参数1,子参数2],参数4]`
![](https://img.kancloud.cn/53/cc/53ccad6d6cf6bd854ce6cff5fcbbfffa_752x547.png)
我们在来看一下比较特殊的 post_form 的内容(解析后),参考[匹配位置说明](https://www.kancloud.cn/openstar/install/1136679)
![](https://img.kancloud.cn/a7/7f/a77f0b6c8c97d124015d2cd6e1116b54_522x175.png)
解释:
* 参数1:匹配的内容【类型可以是字符串、数组、字典、正则字符串... 具体是有第二个参数来决定】
* 参数2:匹配符【标记使用哪种方式进行匹配(字符串等于、包含、正则匹配、数组、字典...)】
具体有哪些匹配方式,参考[匹配方式说明](https://www.kancloud.cn/openstar/install/1136678),一定要仔细阅读,在来配置自己想要的规则,可以优化好自己的规则,提高其匹配的性能(**能不用正则就不用正则**)
* 参数3:[子参数1,子参数2]
* 子参数1:需要匹配的`form-id`名称(完全等于匹配);【暂不支持 form-id 的模糊/正则匹配】
* 子参数2:需要匹配的位置,通过图片中标记的位置,大概理解了这个参数代表的意思(所以取值范围固定 1-4)
`1 --- form-id 名称;2 --- 文件名称;3 --- 文件类型;4 --- 文件内容`
* 参数4(最后一个参数):取反标记【可以没有,默认是false】
当我们的匹配符用了`等于`这个匹配方式时,取反标记为`true`,那么规则匹配就取它的反,匹配符则会解读为`不等于`,这个使用有点不好理解,但是多调试多测试几次就知道具体是什么回事
## 重要的事情
一定要多练习、测试,一定要多练习、测试,一定要多练习、测试,才可以理解这个规则的匹配
**因为被匹配的内容类型样式多样,还没有想到比较优雅的规则表示的方式,如果您有好的思路,不妨分享一下**
- kcon 兵器谱
- 演示 1
- 演示 2
- 演示 3
- 演示 4
- 演示 5
- 前言
- 安装
- 更新
- 登录后台
- 授权认证
- 集群配置
- 7层防护 -- 最佳实践
- 匹配位置说明
- 匹配方式说明
- 规则匹配详解
- 全局 - CDN规则
- 添加header头配置
- 限速limit配置
- 缓存proxy_cache配置
- 清除缓存
- 全局 - 获取真实IP配置
- 全局 - IP黑白名单
- 全局 - 域名方法配置(白名单)
- 全局 - 跳转规则配置
- 全局 - 高级规则配置
- 全局 - 普通规则配置
- 全局 - 频率规则配置
- 全局 - 内容替换规则
- 内容替换规则(插件使用)
- 全局 - 拦截信息配置
- 全局 - LOG规则配置
- 平台配置
- 基本配置
- 高级配置
- 配置文件管理
- 4 层代理
- 转发配置
- 插件管理
- 防护配置
- 网站管理
- 证书管理
- 域名管理
- 网站规则
- 插件管理
- 插件操作 --- 基本使用
- 插件操作 --- 手机号脱敏插件
- 归档
- 更新日志
- 视频教程目录