请教一个规则设置

2021-12-31 06:40:12 +08:00
 Infinitify

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

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

1705 次点击
所在节点    Cloudflare
12 条回复
Chad0000
2021-12-31 06:52:34 +08:00
URL 没有写错吧,这两个一模一样。
Infinitify
2021-12-31 06:56:00 +08:00
@Chad0000 没错,同一个 url,结尾数字不同
Chad0000
2021-12-31 07:32:41 +08:00
可以使用 regex_replace ,但我试了一下,免费版不支持正则,此路不通。看来你需要在你自己的原服务器上处理了。
Infinitify
2021-12-31 08:06:04 +08:00
@Chad0000 源服务器很麻烦,只能尽量在 CF 中处理了。

请教下:Transform Rules 这个中的 rewrite to 的设置 static/dynamic 究竟如何理解?如何理解对应 rewrite 规则?符号 / 之后跟随是什么?
cssk
2021-12-31 08:07:09 +08:00
@Infinitify #2 都是 456
Infinitify
2021-12-31 08:08:40 +08:00
@Chad0000 请看截图
[img][/img]
Infinitify
2021-12-31 08:09:39 +08:00
@cssk 不好意思,2#应该为非 456 其它任意数字。
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"]来获取你要的参数了。
Chad0000
2021-12-31 08:25:33 +08:00
如果你是收费套餐可以,否则你只能使用 Worker 了(注意免费版的数量和频率限制,不要影响到你的业务)
Infinitify
2021-12-31 14:56:35 +08:00
@Chad0000 方便留个 vx 请教下吗?
Infinitify
2022-01-02 00:38:35 +08:00
@Chad0000 我测试了下 catcon()还是不行
如果可以达到 https://bac.com/ 或者 https://bac.com/allproducts
写入到 https://bac.com/?w_id=456https://bac.com/allproducts?w_id=456 也可以
Chad0000
2022-01-02 17:55:10 +08:00
@Infinitify #11 在度假,回来了看看。如果只是路径替换你可以试试使用判定条件为 contains allproducts ,然路径手动改为 /,请求参数不变。就是你那个需求。你需要写清楚具体规则才好帮助到你。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX