比如 abc.com?page=1234 或者 abc.com 想通过 rule 语法 rewrite 为 abc.com?page=4321 该如何写? 研究了几天了,总是失败.
1
ZeroClover 2022-10-07 00:43:11 +08:00
Ruleset Engine 应该不支持这种用法,开个 Worker 用 JS 来实现吧
|
2
crab 2022-10-07 00:54:48 +08:00
|
4
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}") |
5
Cify OP @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 个月, 失败了. |
6
eason1874 2022-10-07 02:16:19 +08:00 1
@Cify #5 你这跟题目说的两回事了,这就是加上查询参数 page=4 ,没有就添加,有就修改
这个应该添加个静态规则就可以了,我现在没 cf 账号,看文档应该是 1. 找到添加规则的地方 Rules > Transform Rules > Rewrite URL 2. 添加规则,填写规则名字 3. Match 不填,因为所有情况都需要匹配 3. Path 路径保持不变,Preserve 4. 改写查询参数 Query > Rewrite to… > Static 填入 page=4 |
8
Cify OP @eason1874 #6 下面这个不填无法保存规则并运行, 所以我随便填写了 Hostname
3. Match 不填,因为所有情况都需要匹配 |
9
Cify OP @eason1874 请教下, rewrite 如果是?page=4(带问号) 在下面的 static 空格中是否要加上?
4. 改写查询参数 Query > Rewrite to… > Static 填入 page=4 CF 规则很奇怪,也许是我移动局域网的原因, 这个 rewrite 规则一个月来都运行无误,但是今天又不行了. |
11
Cify OP @eason1874 我去了其他地方, 结果没这问题了, 看来是 isp 得缓存问题.
另外继续想请教下, 加上 rewrite 规则后, wp 的后台登录地址也同时加上了 page=4 导致无法登录, 如何增加上排除后台登录地址 https://www.abc.com/wp-admin/中 wp-admin 以及延展的自动加上 page=4? |