跳转到内容
搜索文档

批量重定向工作原理

最后更新 查看 MarkdownAgent 设置

当请求到达 Cloudflare 时,会在将请求发送到源服务器之前评估批量重定向。Cloudflare 会检查由批量重定向规则启用的每个批量重定向列表的所有 URL 重定向。

如果根据 URL 匹配算法找到 URL 重定向的匹配项,则会根据 URL 重定向配置参数立即执行重定向操作。执行重定向操作后,Cloudflare 不会执行任何进一步的处理。

匹配重定向的源 URL

以下 URL 重定向参数控制请求 URL 与已配置(并启用)的 URL 重定向的源 URL 之间的匹配行为:

  • Subpath matching(子路径匹配) (默认值:false)

    • 如果为 true,则 URL 重定向不仅适用于确切的源路径,还适用于其下的所有路径。例如,考虑 URL 重定向的以下源 URL 和目标 URL:

      • Source URL:https://example.com/foo/
      • Target URL:https://example.com/qux/
    • 使用此配置并启用 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
    • 使用此配置并启用 Include subdomains(包含子域名),除了指定的没有子域的域(https://example.com/about)之外,对 http://a.example.com/abouthttp://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
    • 使用此配置并启用 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/
    • https://example.com/a/foo 的传入请求将被重定向到 https://example.com/b/foo

    • 如果将 Preserve path suffix(保留路径后缀) 设置为 false,则同一请求仍将匹配重定向,但将被重定向到 https://example.com/b/

有关这些参数的详细信息,请参阅 URL 重定向参数

URL 匹配算法

如果满足以下条件,则传入请求的 URL 将匹配列表中的 URL 重定向:

  1. 方案(httphttps)与 URL 重定向定义中的源 URL 相同。没有方案的源 URL 将同时匹配 httphttps

  2. 主机名与 URL 重定向定义中源 URL 的主机名相同。如果启用了 Include subdomains(包含子域名),则重定向定义中主机名的子域也会匹配。

  3. 路径与源 URL 相同。如果启用了 Subpath matching(子路径匹配),Cloudflare 在确定是否存在匹配项时,还会考虑 URL 重定向源 URL 中路径的子路径。例如,源 URL 定义为 example.com/blog 的 URL 重定向也将匹配对 example.com/blog/fooexample.com/blog/bar 的请求。

确定要应用的 URL 重定向

如果可以应用多个 URL 重定向,则由以下规则确定优先的重定向:

  1. 假设有两个启用了 Subpath matching(子路径匹配) 的 URL 重定向,路径最具体的 URL 重定向优于另一个 URL 重定向。
    如果存在两个源 URL 路径为 /folder/folder/subfolder 的 URL 重定向,则针对 /folder/subfolder/item URL 路径的传入请求将匹配第二个重定向(/folder/subfolder),因为它更具体。

  2. 具有确切主机名的 URL 重定向优于启用了 Include subdomains(包含子域名) 选项的 URL 重定向。

  3. 假设有两个启用了 Include subdomains(包含子域名) 的 URL 重定向,域最具体的 URL 优于另一个 URL 重定向。
    如果存在两个源 URL 主机名为 bar.comfoo.bar.com 的 URL 重定向,则对 qux.foo.bar.com 的传入请求将匹配第二个重定向(foo.bar.com),因为它更具体。

  4. 具有特定方案(httphttps)的 URL 重定向优于匹配两种方案的 URL 重定向。

这篇文档对您有帮助吗?