cloudflare 的 rules 撰写请教

2022-10-07 00:38:52 +08:00
 Cify

比如 abc.com?page=1234 或者 abc.com 想通过 rule 语法 rewrite 为 abc.com?page=4321 该如何写? 研究了几天了,总是失败.

1343 次点击
所在节点    程序员
12 条回复
ZeroClover
2022-10-07 00:43:11 +08:00
Ruleset Engine 应该不支持这种用法,开个 Worker 用 JS 来实现吧
crab
2022-10-07 00:54:48 +08:00
Cify
2022-10-07 01:03:54 +08:00
@crab 试过,不成功.
eason1874
2022-10-07 01:11:59 +08:00
如果总是固定四个数字,那正则匹配四个变量,然后重新排序应该可以

regex_replace( http.request.uri.path, "^?page=([0-9])([0-9])([0-9])([0-9])$", "?page=${4}${3}${2}${1}")
Cify
2022-10-07 01:31:07 +08:00
@eason1874 实际上只有一位数, 以下为理想达到的要求:
1. abc.com 若后缀没有则加上?page=4
2. abc.com?page=1 则改为 abc.com?page=4
3. abc.com/xxx?page=1 则其中 xx 路径不变改为 abc.com/xxx?page=4

已经试了 1 个月, 失败了.
eason1874
2022-10-07 02:16:19 +08:00
@Cify #5 你这跟题目说的两回事了,这就是加上查询参数 page=4 ,没有就添加,有就修改

这个应该添加个静态规则就可以了,我现在没 cf 账号,看文档应该是

1. 找到添加规则的地方 Rules > Transform Rules > Rewrite URL
2. 添加规则,填写规则名字
3. Match 不填,因为所有情况都需要匹配
3. Path 路径保持不变,Preserve
4. 改写查询参数 Query > Rewrite to… > Static 填入 page=4
Cify
2022-10-07 12:43:41 +08:00
@eason1874 #6 这个 rewrite 测试过了, 没什么大问题, 就是站点访问很慢.

#2 #3 回头我再试下
Cify
2022-10-07 20:22:09 +08:00
@eason1874 #6 下面这个不填无法保存规则并运行, 所以我随便填写了 Hostname
3. Match 不填,因为所有情况都需要匹配
Cify
2022-10-07 21:09:25 +08:00
@eason1874 请教下, rewrite 如果是?page=4(带问号) 在下面的 static 空格中是否要加上?
4. 改写查询参数 Query > Rewrite to… > Static 填入 page=4

CF 规则很奇怪,也许是我移动局域网的原因, 这个 rewrite 规则一个月来都运行无误,但是今天又不行了.
eason1874
2022-10-07 21:39:24 +08:00
@Cify 不用问号。测试要注意缓存,CF 本身的缓存和浏览器的缓存
Cify
2022-10-09 16:00:44 +08:00
@eason1874 我去了其他地方, 结果没这问题了, 看来是 isp 得缓存问题.

另外继续想请教下, 加上 rewrite 规则后, wp 的后台登录地址也同时加上了 page=4 导致无法登录, 如何增加上排除后台登录地址 https://www.abc.com/wp-admin/中 wp-admin 以及延展的自动加上 page=4?
eason1874
2022-10-09 16:34:33 +08:00
@Cify 排除浏览器缓存测试可以用浏览器的隐私窗口,每次测试都把隐私窗口全部关掉,再打开,就是没任何缓存的

排除 /wp-admin/ 的路径,编辑规则的时候在 Match 添加

not starts_with( http.request.uri.path, "/wp-admin/")

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX