Cloudflare 中文文档
Pages
编辑这个页面
跳转官方原文档
Set theme to dark (⇧+D)

重定向

要在 Cloudflare 页面上使用重定向,请在项目输出文件夹中名为 _redirects(不含文件扩展名)的纯文本文件中声明重定向。构建输出文件夹 是特定于项目的,因此 _redirects 文件不应总是位于版本库的根目录中。重定向的更改会在构建时更新到网站上,因此请确保每次更新重定向时都提交并推送文件,以触发新的构建。

​​ 结构

​​ 每行

每行只能定义一个重定向,且必须遵循此格式,否则将被忽略。

  • source required

    • 文件路径。
    • 可包括 通配符 (*)占位符
    • 由于片段由浏览器而非 Cloudflare 网络进行评估,因此不会评估源中的任何片段。
  • destination required

    • 文件路径或外部链接。
    • 可包括片段、查询字符串、splatsplaceholders
  • code default: 302

    • 可选参数

# 开头的行将被视为注释。

​​ 每个文件

一个项目只能有 2,000 个静态重定向和 100 个动态重定向,合计 2,100 个重定向。每个重定向声明有 1000 个字符的限制。

重定向 “文件中:

  • 重定向的顺序很重要。如果同一 “源 “路径有多个重定向,则应用最上层的重定向。
  • 静态重定向应出现在动态重定向之前。
  • 无论资产是否与接收到的请求相匹配,重定向都会被跟踪。

包含多个重定向的完整示例如下:

​​ 高级重定向

Cloudflare 目前为高级重定向提供有限的支持。未来将增加更多支持。

Feature Support Example Notes
Redirects (301, 302, 303, 307, 308) Yes /home / 301 302 is used as the default status code.
Rewrites (other status codes) No /blog/* /blog/404.html 404
Splats Yes /blog/* /posts/:splat Refer to Splats.
Placeholders Yes /blog/:year/:month/:date/:slug /news/:year/:month/:date/:slug Refer to Placeholders.
Query Parameters No /shop id=:id /blog/:id 301
Proxying Yes /blog/* /news/:splat 200 Refer to Proxying.
Domain-level redirects No workers.example.com/* workers.example.com/blog/:splat 301
Redirect by country or language No / /us 302 Country=us
Redirect by cookie No /\* /preview/:splat 302 Cookie=preview

​​ 重定向和标头匹配

重定向在头文件之前执行,因此如果请求同时符合两个文件中的规则,重定向将胜出。

​​ Splats

在匹配时,溅射符号(星号,*)将贪婪地匹配所有字符。你只能在 URL 中包含一个溅字符。

匹配的值可与 :splat 一起用于重定向位置。

​​ 占位符

可以使用 :placeholder_name定义占位符。冒号 (:)后面跟一个字母表示占位符的开始,后面的占位符名称必须由字母数字字符和下划线 (:[A-Za-z]/w*)组成。每个已命名的占位符只能被引用一次。占位符匹配除分隔符以外的所有字符,分隔符在作为主机的一部分时是句号 (.) 或正斜线 (/),在作为路径的一部分时只能是正斜线 (/)。

同样,匹配的值可以通过 :placeholder_name在 redirect 值中使用。

​​ 代理

代理只支持网站上的相对 URL。你不能代理外部域。

只有第一个重定向才适用。例如,在下面的示例中,向 /a提出的请求将呈现 /b,向 /b提出的请求将呈现 /c,但 /a不会呈现 /c

​​ 超过_重定向限制

一个 _redirects 文件最多可包含 2,000 个静态重定向和 100 个动态重定向,合计 2,100 个重定向。使用 Bulk Redirects处理超过 Pages 设置的 2,100 重定向规则限制的重定向。

要使用批量重定向,请参阅 批量重定向仪表板文档批量重定向 API 文档

​​ 相关资源