Shadowrocket 分流规则怎么写?常用类型与匹配逻辑
一句话回答:一条规则由条件类型、匹配值与策略三部分组成,例如把 example.com 的所有子域名设为直连;规则自上而下匹配,命中即停止,越具体的规则应放在越前面。
要点速览
- 规则的三个要素:条件类型(按什么匹配)、匹配值(匹配谁)、策略(直连或代理)。
- DOMAIN-SUFFIX 覆盖该域名及其全部子域名,是最常用也最省事的类型。
- 规则按顺序匹配,命中第一条后不再继续,具体规则要写在宽泛规则之前。
- 改完规则先测一个已知域名验证走向,再投入日常使用。
写规则不难,难的是理解匹配顺序。把顺序弄清楚,规则就从不生效变成了可预期。
一条规则由什么组成
规则的结构是固定的:条件类型决定按什么维度匹配,匹配值给出具体内容,策略决定命中后走直连还是代理。三者之间用逗号分隔。
例如要让某个域名的所有子域名都走直连,使用后缀类型并把策略设为直连即可;要让单个域名走代理,使用完整域名类型。
| 类型 | 匹配对象 | 典型用途 | 精确度 |
|---|---|---|---|
| DOMAIN-SUFFIX | 域名及所有子域名 | 整站与其 CDN 资源 | 较高 |
| DOMAIN | 完整域名 | 精确到单个主机 | 最高 |
| IP-CIDR | IP 地址段 | 不走域名的程序 | 取决于段大小 |
| GEOIP | 归属地区 | 按地区批量处理 | 依赖地区库 |
| USER-AGENT | 应用标识 | 按客户端区分 | 可被伪造 |
匹配顺序决定最终走向
客户端从上到下逐条比对,一旦命中就采用该条策略并停止比对。因此把一条宽泛规则写在前面,会让后面的具体规则永远没有机会生效。
实际维护时的经验是:先写精确的完整域名规则,再写后缀规则,最后写地区与兜底规则,形成由细到粗的结构。
- 同一域名既有完整域名规则又有后缀规则时,把完整域名规则放在前面。
- 兜底规则放在最后,用于处理前面都没命中的流量。
- 定期清理失效规则,规则过多会拖慢匹配速度,也让排障变得困难。
从写到生效的流程
在配置中找到规则部分,新增一行并填写类型、值与策略,保存后回到首页重新连接一次让配置生效。
生效验证很简单:挑一个受该规则影响的域名,看它的实际走向是否符合预期;不符合时检查是否有更靠前的规则先命中了它。
获取规则分流客户端规则写法的高频疑问
规则改了为什么没生效?
常见原因有三个:规则顺序被前面的条目抢先命中、改完没有重新连接、改动的是另一份未被启用的配置。按顺序核对这三项通常能解决。
可以用通配符吗?
后缀类型本身就能覆盖全部子域名,多数场景不需要通配符;过度使用通配符容易误伤同后缀的其他站点。
规则数量有上限吗?
没有硬性上限,但条目过多会增加匹配开销并降低可维护性。建议按用途分组管理,定期合并重复条目。