cloudflare 的 rules 撰写请教 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Cify
V2EX    程序员

cloudflare 的 rules 撰写请教

  •  
  •   Cify 2022 年 10 月 7 日 2005 次点击
    这是一个创建于 1227 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 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 月 7 日
    Ruleset Engine 应该不支持这种用法,开个 Worker 用 JS 来实现吧
    Cify
        3
    Cify  
    OP
       2022 年 10 月 7 日
    @crab 试过,不成功.
    eason1874
        4
    eason1874  
       2022 年 10 月 7 日
    如果总是固定四个数字,那正则匹配四个变量,然后重新排序应该可以

    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 月 7 日
    @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 月 7 日   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 月 7 日
    @eason1874 #6 这个 rewrite 测试过了, 没什么大问题, 就是站点访问很慢.

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

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

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

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

    not starts_with( http.request.uri.path, "/wp-admin/")
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     777 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 18:57 PVG 02:57 LAX 10:57 JFK 13:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86