本教程将指导你如何使用 Transform Rules 和 Origin Rules 同时修改传入请求的 URI 路径和 Host 标头。
你的网站访问者将从 https://<YOUR_SOURCE_HOSTNAME>/uploads/* 路由到 https://<YOUR_TARGET_HOSTNAME>/*。
在本教程中,你将完成以下操作:
- 创建 URL 重写以从路径中移除
/uploads。 - 创建源站规则(origin rule)以将
Host标头修改为所需的主机名。
按照这些步骤操作,你可以有效管理 URI 路径和 Host 标头,以适当路由流量并优化请求处理。
-
在 Cloudflare 仪表板中,前往 Rules 概览 页面。
Go to Overview ↗ -
选择 Create rule(创建规则) > URL Rewrite Rule(URL 重写规则)。
-
在 Rule name(规则名称) 中输入规则的描述性名称。
-
在 If incoming requests match(如果传入请求匹配) 下,选择 Custom filter expression(自定义过滤表达式),选择 Edit expression(编辑表达式),并输入以下表达式:
Expression Editor(表达式编辑器) 中的文本:
raw.http.request.uri.path matches "^/uploads/.*" -
在 Set Rewrite parameters(设置重写参数) 下,选择 Path(路径) > Rewrite to(重写为),并选择 Dynamic(动态)。
-
定义重写 URL 规则的操作:
Path(路径) > Rewrite to(重写为) > Dynamic(动态) 之后的文本:
regex_replace(raw.http.request.uri.path, "^/uploads/", "/")regex_replace()函数将路径中的/uploads/部分替换为/,从而将/uploads/example.jpg更改为/example.jpg。 -
选择 Deploy(部署)。
-
在 Cloudflare 仪表板中,前往 Rules 概览 页面。
Go to Overview ↗ -
选择 Create rule(创建规则) > Origin Rule(源站规则)。
-
在 Rule name(规则名称) 中输入规则的描述性名称。
-
在 When incoming requests match(当传入请求匹配时) 下,定义规则表达式:
Expression Editor(表达式编辑器) 中的文本:
raw.http.request.uri.path matches "^/uploads/.*" -
在 Set origin parameters(设置源站参数) 下,选择 Host Header(主机标头) > Rewrite to(重写为)。
-
配置规则以将
Host标头修改为所需的主机名:Host Header(主机标头) > Rewrite to(重写为) 之后的文本:
example.com这会将匹配请求的
Host标头 设置为example.com。请务必将example.com替换为你的实际主机名。 -
(可选)要将请求路由到不同的源站(DNS 目标),请使用 DNS override:
DNS Record(DNS 记录) > Override to(覆盖为) 之后的文本:
example.com这会将请求路由到
example.com的 DNS 目标,而不是你的默认 DNS 记录。 -
选择 Deploy(部署)。
完成本教程后,发往 https://<YOUR_SOURCE_HOSTNAME>/uploads/* 的入站流量将路由到 https://<YOUR_TARGET_HOSTNAME>/*。
确保 URL 重写 和源站规则(或 Cloud Connector 规则)的过滤器足够精确,以避免意外的规则执行。
请记住,规则是按顺序评估的,因此 Transform Rules(包括 URL 重写)会在 Origin Rules 或 Cloud Connector 之前运行。