
如果一个动态 url 比如结尾为 https://bac.com/allproducts?w_id=456 想重写为 https://bac.com/allproducts?w_id=456
该如何设置规则?测试了很久都不行,特来请教。
1 ktqFDx9m2Bvfq3y4 2021 年 12 月 31 日 via iPhone URL 没有写错吧,这两个一模一样。 |
2 Infinitify OP @Chad0000 没错,同一个 url,结尾数字不同 |
3 ktqFDx9m2Bvfq3y4 2021 年 12 月 31 日 可以使用 regex_replace ,但我试了一下,免费版不支持正则,此路不通。看来你需要在你自己的原服务器上处理了。 |
4 Infinitify OP @Chad0000 源服务器很麻烦,只能尽量在 CF 中处理了。 请教下:Transform Rules 这个中的 rewrite to 的设置 static/dynamic 究竟如何理解?如何理解对应 rewrite 规则?符号 / 之后跟随是什么? |
5 cssk 2021 年 12 月 31 日 via iPhone @Infinitify #2 都是 456 |
6 Infinitify OP |
7 Infinitify OP @cssk 不好意思,2#应该为非 456 其它任意数字。 |
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"]来获取你要的参数了。 |
9 ktqFDx9m2Bvfq3y4 2021 年 12 月 31 日 如果你是收费套餐可以,否则你只能使用 Worker 了(注意免费版的数量和频率限制,不要影响到你的业务) |
10 Infinitify OP @Chad0000 方便留个 vx 请教下吗? |
11 Infinitify OP @Chad0000 我测试了下 catcon()还是不行 如果可以达到 https://bac.com/ 或者 https://bac.com/allproducts 写入到 https://bac.com/?w_id=456 和 https://bac.com/allproducts?w_id=456 也可以 |
12 ktqFDx9m2Bvfq3y4 2022 年 1 月 2 日 via iPhone @Infinitify #11 在度假,回来了看看。如果只是路径替换你可以试试使用判定条件为 contains allproducts ,然路径手动改为 /,请求参数不变。就是你那个需求。你需要写清楚具体规则才好帮助到你。 |