• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Cify
V2EX  ›  程序员

cloudflare 的 rules 撰写请教

  •  
  •   Cify · Oct 7, 2022 · 2228 views
    This topic created in 1346 days ago, the information mentioned may be changed or developed.

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

    12 replies    2022-10-09 16:34:33 +08:00
    ZeroClover
        1
    ZeroClover  
       Oct 7, 2022
    Ruleset Engine 应该不支持这种用法,开个 Worker 用 JS 来实现吧
    Cify
        3
    Cify  
    OP
       Oct 7, 2022
    @crab 试过,不成功.
    eason1874
        4
    eason1874  
       Oct 7, 2022
    如果总是固定四个数字,那正则匹配四个变量,然后重新排序应该可以

    regex_replace( http.request.uri.path, "^?page=([0-9])([0-9])([0-9])([0-9])$", "?page=${4}${3}${2}${1}")
    Cify
        5
    Cify  
    OP
       Oct 7, 2022
    @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  
       Oct 7, 2022   ❤️ 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
       Oct 7, 2022
    @eason1874 #6 这个 rewrite 测试过了, 没什么大问题, 就是站点访问很慢.

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

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

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

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

    not starts_with( http.request.uri.path, "/wp-admin/")
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1073 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:09 · PVG 07:09 · LAX 16:09 · JFK 19:09
    ♥ Do have faith in what you're doing.