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

请教一个规则设置

  •  
  •   Infinitify · 2021 年 12 月 31 日 · 2214 次点击
    这是一个创建于 1564 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果一个动态 url 比如结尾为 https://bac.com/allproducts?w_id=456 想重写为 https://bac.com/allproducts?w_id=456

    该如何设置规则?测试了很久都不行,特来请教。

    12 条回复    2022-01-02 17:55:10 +08:00
    ktqFDx9m2Bvfq3y4
        1
    ktqFDx9m2Bvfq3y4  
       2021 年 12 月 31 日 via iPhone
    URL 没有写错吧,这两个一模一样。
    Infinitify
        2
    Infinitify  
    OP
       2021 年 12 月 31 日
    @Chad0000 没错,同一个 url,结尾数字不同
    ktqFDx9m2Bvfq3y4
        3
    ktqFDx9m2Bvfq3y4  
       2021 年 12 月 31 日
    可以使用 regex_replace ,但我试了一下,免费版不支持正则,此路不通。看来你需要在你自己的原服务器上处理了。
    Infinitify
        4
    Infinitify  
    OP
       2021 年 12 月 31 日
    @Chad0000 源服务器很麻烦,只能尽量在 CF 中处理了。

    请教下:Transform Rules 这个中的 rewrite to 的设置 static/dynamic 究竟如何理解?如何理解对应 rewrite 规则?符号 / 之后跟随是什么?
    cssk
        5
    cssk  
       2021 年 12 月 31 日 via iPhone
    @Infinitify #2 都是 456
    Infinitify
        6
    Infinitify  
    OP
       2021 年 12 月 31 日
    @Chad0000 请看截图
    [img][/img]
    Infinitify
        7
    Infinitify  
    OP
       2021 年 12 月 31 日
    @cssk 不好意思,2#应该为非 456 其它任意数字。
    ktqFDx9m2Bvfq3y4
        8
    ktqFDx9m2Bvfq3y4  
       2021 年 12 月 31 日
    看这个[官方介绍]( https://blog.cloudflare.com/introducing-transform-rules-with-url-rewriting-at-the-edge/)

    在第二个 Query 那边选 RewriteTo - Dynamic 。Dynamic 的意思就是你可以写表达式,它有内置变量和方法,其中正则就是一种,上面那个官方介绍里写了。你可以选 Dynamic 后填写类似 regex_replace("/foo/a/path", "^/foo/([^/]*)/(.*)$", "/bar/${2}/${1}")。其实主要也是它的 query 不支持 map 类型,否则可以直接使用 http.request.uri.query["w_id"]来获取你要的参数了。
    ktqFDx9m2Bvfq3y4
        9
    ktqFDx9m2Bvfq3y4  
       2021 年 12 月 31 日
    如果你是收费套餐可以,否则你只能使用 Worker 了(注意免费版的数量和频率限制,不要影响到你的业务)
    Infinitify
        10
    Infinitify  
    OP
       2021 年 12 月 31 日
    @Chad0000 方便留个 vx 请教下吗?
    Infinitify
        11
    Infinitify  
    OP
       2022 年 1 月 2 日
    @Chad0000 我测试了下 catcon()还是不行
    如果可以达到 https://bac.com/ 或者 https://bac.com/allproducts
    写入到 https://bac.com/?w_id=456https://bac.com/allproducts?w_id=456 也可以
    ktqFDx9m2Bvfq3y4
        12
    ktqFDx9m2Bvfq3y4  
       2022 年 1 月 2 日 via iPhone
    @Infinitify #11 在度假,回来了看看。如果只是路径替换你可以试试使用判定条件为 contains allproducts ,然路径手动改为 /,请求参数不变。就是你那个需求。你需要写清楚具体规则才好帮助到你。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3915 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 10:29 · PVG 18:29 · LAX 03:29 · JFK 06:29
    ♥ Do have faith in what you're doing.