当请求到达 Cloudflare 时,会在将请求发送到源服务器之前评估批量重定向。Cloudflare 会检查由批量重定向规则启用的每个批量重定向列表的所有 URL 重定向。
如果根据 URL 匹配算法找到 URL 重定向的匹配项,则会根据 URL 重定向配置参数立即执行重定向操作。执行重定向操作后,Cloudflare 不会执行任何进一步的处理。
以下 URL 重定向参数控制请求 URL 与已配置(并启用)的 URL 重定向的源 URL 之间的匹配行为:
Subpath matching(子路径匹配) (默认值:false)
-
如果为
true,则 URL 重定向不仅适用于确切的源路径,还适用于其下的所有路径。例如,考虑 URL 重定向的以下源 URL 和目标 URL:- Source URL:
https://example.com/foo/ - Target URL:
https://example.com/qux/
- Source URL:
-
使用此配置并启用 Subpath matching(子路径匹配),对
example.com/foo/bar的传入请求将被重定向到https://example.com/qux/bar。
-
Include subdomains(包含子域名) (默认值:false)
-
如果为
true,则 URL 重定向不仅匹配源 URL 中的确切主机名,还匹配其任何子域。例如,考虑 URL 重定向的以下源 URL 和目标 URL:- Source URL:
https://example.com/about - Target URL:
https://example.com/newpage
- Source URL:
-
使用此配置并启用 Include subdomains(包含子域名),除了指定的没有子域的域(
https://example.com/about)之外,对http://a.example.com/about和http://a.b.example.com/about的传入请求也将匹配。
-
有关这些参数的详细信息,请参阅 URL 重定向参数。
以下参数配置 Cloudflare 如何确定最终目标 URL 的路径和查询字符串:
Preserve query string(保留查询字符串) (默认值:false)
-
如果为
true,则最终目标 URL 会保留原始请求的查询字符串。例如,考虑 URL 重定向的以下源 URL 和目标 URL:- Source URL:
https://example.com/about - Target URL:
https://example.com/newpage
- Source URL:
-
使用此配置并启用 Preserve query string(保留查询字符串),对
http://example.com/about?q=term的传入请求将被重定向到https://example.com/newpage?q=term。如果禁用 Preserve query string(保留查询字符串),相同的传入请求将被重定向到https://example.com/newpage。
-
Preserve path suffix(保留路径后缀) (默认值:true)
-
如果为
true,最终目标 URL 将包含剩余的路径段(请求路径中与 URL 重定向的源 URL 不匹配的部分)。 -
启用 Subpath matching(子路径匹配) 时,未匹配的路径将复制到最终目标 URL。例如,考虑 URL 重定向的以下源 URL 和目标 URL:
- Source URL:
https://example.com/a/ - Target URL:
https://example.com/b/
- Source URL:
-
对
https://example.com/a/foo的传入请求将被重定向到https://example.com/b/foo。 -
如果将 Preserve path suffix(保留路径后缀) 设置为
false,则同一请求仍将匹配重定向,但将被重定向到https://example.com/b/。
-
有关这些参数的详细信息,请参阅 URL 重定向参数。
如果满足以下条件,则传入请求的 URL 将匹配列表中的 URL 重定向:
-
方案(
http或https)与 URL 重定向定义中的源 URL 相同。没有方案的源 URL 将同时匹配http和https。 -
主机名与 URL 重定向定义中源 URL 的主机名相同。如果启用了 Include subdomains(包含子域名),则重定向定义中主机名的子域也会匹配。
-
路径与源 URL 相同。如果启用了 Subpath matching(子路径匹配),Cloudflare 在确定是否存在匹配项时,还会考虑 URL 重定向源 URL 中路径的子路径。例如,源 URL 定义为
example.com/blog的 URL 重定向也将匹配对example.com/blog/foo和example.com/blog/bar的请求。
如果可以应用多个 URL 重定向,则由以下规则确定优先的重定向:
-
假设有两个启用了 Subpath matching(子路径匹配) 的 URL 重定向,路径最具体的 URL 重定向优于另一个 URL 重定向。
如果存在两个源 URL 路径为/folder和/folder/subfolder的 URL 重定向,则针对/folder/subfolder/itemURL 路径的传入请求将匹配第二个重定向(/folder/subfolder),因为它更具体。 -
具有确切主机名的 URL 重定向优于启用了 Include subdomains(包含子域名) 选项的 URL 重定向。
-
假设有两个启用了 Include subdomains(包含子域名) 的 URL 重定向,域最具体的 URL 优于另一个 URL 重定向。
如果存在两个源 URL 主机名为bar.com和foo.bar.com的 URL 重定向,则对qux.foo.bar.com的传入请求将匹配第二个重定向(foo.bar.com),因为它更具体。 -
具有特定方案(
http或https)的 URL 重定向优于匹配两种方案的 URL 重定向。