如果一个动态 url 比如结尾为 https://bac.com/allproducts?w_id=456 想重写为 https://bac.com/allproducts?w_id=456
该如何设置规则?测试了很久都不行,特来请教。
1
Chad0000 2021-12-31 06:52:34 +08:00 via iPhone
URL 没有写错吧,这两个一模一样。
|
2
Infinitify OP @Chad0000 没错,同一个 url,结尾数字不同
|
3
Chad0000 2021-12-31 07:32:41 +08:00
可以使用 regex_replace ,但我试了一下,免费版不支持正则,此路不通。看来你需要在你自己的原服务器上处理了。
|
4
Infinitify OP @Chad0000 源服务器很麻烦,只能尽量在 CF 中处理了。
请教下:Transform Rules 这个中的 rewrite to 的设置 static/dynamic 究竟如何理解?如何理解对应 rewrite 规则?符号 / 之后跟随是什么? |
5
cssk 2021-12-31 08:07:09 +08:00 via iPhone
@Infinitify #2 都是 456
|
6
Infinitify OP |
7
Infinitify OP @cssk 不好意思,2#应该为非 456 其它任意数字。
|
8
Chad0000 2021-12-31 08:16:03 +08:00
看这个[官方介绍]( 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
Chad0000 2021-12-31 08:25:33 +08:00
如果你是收费套餐可以,否则你只能使用 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
Chad0000 2022-01-02 17:55:10 +08:00 via iPhone
@Infinitify #11 在度假,回来了看看。如果只是路径替换你可以试试使用判定条件为 contains allproducts ,然路径手动改为 /,请求参数不变。就是你那个需求。你需要写清楚具体规则才好帮助到你。
|