如何配置 Cloudflare 页面规则强制全站 HTTPS 跳转?

文章导读
在 Cloudflare 上强制全站 HTTPS 跳转有两种主流方式:推荐使用 SSL/TLS 边缘证书中的原生开关,其次才是页面规则(Page Rules)。原生开关不占用免费套餐宝贵的规则配额,且配置更简单。
📋 目录
  1. 方案对比与选择
  2. 前置检查:SSL/TLS 加密模式
  3. 操作步骤
  4. 验证生效方法
  5. 常见故障与排查
  6. 参考来源
A A

在 Cloudflare 上强制全站 HTTPS 跳转有两种主流方式:推荐使用 SSL/TLS 边缘证书中的原生开关,其次才是页面规则(Page Rules)。原生开关不占用免费套餐宝贵的规则配额,且配置更简单。

先说结论:优先使用「SSL/TLS > 边缘证书」中的 Always Use HTTPS 开关,而非页面规则,以节省配额。无论哪种方式,都必须正确配置 SSL/TLS 加密模式,否则会出现重定向循环。

  • 适合:已接入 Cloudflare DNS 且需要统一管理 HTTPS 跳转的站点
  • 配额注意:免费套餐仅限 3 条页面规则,原生开关不限
  • 验收:访问 HTTP 链接自动跳 HTTPS,浏览器无安全警告,curl 返回 301/302

方案对比与选择

Cloudflare 提供两种实现 HTTPS 强制跳转的途径,建议根据实际需求选择:

  • 方案一(推荐):SSL/TLS 边缘证书开关
    路径:SSL/TLS > 边缘证书 > Always Use HTTPS。
    优势:不占用页面规则配额,配置独立,生效快。
  • 方案二(备选):页面规则(Page Rules)
    路径:规则 > 页面规则 > 创建规则 > Always Use HTTPS。
    劣势:免费套餐仅限 3 条规则,若业务复杂容易配额不足。

前置检查:SSL/TLS 加密模式

在开启跳转前,必须确保 SSL/TLS 加密模式与源服务器证书状态匹配,这是避免重定向循环的关键。

如何配置 Cloudflare 页面规则强制全站 HTTPS 跳转?
  1. 进入 Cloudflare 后台,选择对应域名。
  2. 点击左侧「SSL/TLS」菜单。
  3. 查看加密模式设置:
    • 完全(Full):源服务器必须有 SSL 证书(可以是自签名)。
    • 完全(严格)/ Full (Strict):源服务器必须有有效的公网可信 SSL 证书。
    • 灵活(Flexible):源服务器无需证书,Cloudflare 与源站之间为 HTTP。注意:若源站本身已强制 HTTPS,选此项会导致重定向循环。
  4. 建议:若源站已配置证书,务必选择「完全」或「完全(严格)」。

操作步骤

方法一:开启原生 HTTPS 开关(推荐)

  1. 在左侧菜单点击「SSL/TLS」。
  2. 选择子菜单「边缘证书」(Edge Certificates)。
  3. 找到「Always Use HTTPS」选项,将开关拨至「On」。
  4. 点击保存(如有)。

方法二:配置页面规则(备选)

  1. 进入左侧「规则」>「页面规则」,点击「创建页面规则」。
  2. 输入 URL 模式,建议填写 *example.com/* 以覆盖所有子域名和路径。
  3. 在设置选项中选择「Always Use HTTPS」,状态设为「On」。
  4. 点击「保存并部署」。
  5. 注意:免费套餐最多创建 3 条页面规则,请合理规划配额。

生效时间提示:配置修改后通常立即生效,但全球节点 propagation 可能需要 1-5 分钟,若测试未生效请稍后重试。

验证生效方法

配置完成后,可通过以下方式验证跳转是否成功:

  1. 浏览器测试:在地址栏输入 http://example.com,观察是否自动变为 https://example.com
  2. 命令行检查:使用 curl 查看响应头状态码。
    curl -I http://example.com
  3. 预期结果:返回状态码应为 301 或 302,且 Header 中包含 Location: https://...
  4. 缓存清理:若修改后仍跳转旧状态,请使用浏览器无痕模式或清除本地 DNS 缓存测试。

常见故障与排查

  • 重定向循环(Too Many Redirects):
    • 原因:SSL 模式选为「灵活」但源站强制 HTTPS,或源站与 Cloudflare 之间互相强制跳转。
    • 解决:将 SSL 模式改为「完全」或「完全(严格)」,并确保源站证书有效。
  • 规则未生效:
    • 原因:配置刚修改,全球节点尚未同步。
    • 解决:等待 5 分钟后再次测试,或检查是否命中了其他冲突的页面规则。
  • 子域名遗漏:
    • 原因:页面规则 URL 模式只写了 example.com 未加通配符。
    • 解决:确保模式为 *example.com/* 以覆盖 www 及其他子域。

参考来源

  • Cloudflare 官方文档,Page Rules 设置说明,URL: https://developers.cloudflare.com/cache/how-to/page-rules/
  • Cloudflare 官方文档,SSL 重定向循环排查,URL: https://developers.cloudflare.com/ssl/troubleshooting/too-many-redirects/
  • Cloudflare 官方文档,Edge Certificates 设置,URL: https://developers.cloudflare.com/ssl/edge-certificates/