V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cify
V2EX  ›  程序员

cloudflare 的 rules 撰写请教

  •  
  •   Cify · 2022-10-07 00:38:52 +08:00 · 1308 次点击
    这是一个创建于 538 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2022-10-09 16:34:33 +08:00
    ZeroClover
        1
    ZeroClover  
       2022-10-07 00:43:11 +08:00
    Ruleset Engine 应该不支持这种用法,开个 Worker 用 JS 来实现吧
    Cify
        3
    Cify  
    OP
       2022-10-07 01:03:54 +08:00
    @crab 试过,不成功.
    eason1874
        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}")
    Cify
        5
    Cify  
    OP
       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
        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
    Cify
        7
    Cify  
    OP
       2022-10-07 12:43:41 +08:00
    @eason1874 #6 这个 rewrite 测试过了, 没什么大问题, 就是站点访问很慢.

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

    CF 规则很奇怪,也许是我移动局域网的原因, 这个 rewrite 规则一个月来都运行无误,但是今天又不行了.
    eason1874
        10
    eason1874  
       2022-10-07 21:39:24 +08:00
    @Cify 不用问号。测试要注意缓存,CF 本身的缓存和浏览器的缓存
    Cify
        11
    Cify  
    OP
       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
        12
    eason1874  
       2022-10-09 16:34:33 +08:00   ❤️ 1
    @Cify 排除浏览器缓存测试可以用浏览器的隐私窗口,每次测试都把隐私窗口全部关掉,再打开,就是没任何缓存的

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

    not starts_with( http.request.uri.path, "/wp-admin/")
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1964 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:22 · PVG 00:22 · LAX 09:22 · JFK 12:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.