在 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 后台,选择对应域名。
- 点击左侧「SSL/TLS」菜单。
- 查看加密模式设置:
- 完全(Full):源服务器必须有 SSL 证书(可以是自签名)。
- 完全(严格)/ Full (Strict):源服务器必须有有效的公网可信 SSL 证书。
- 灵活(Flexible):源服务器无需证书,Cloudflare 与源站之间为 HTTP。注意:若源站本身已强制 HTTPS,选此项会导致重定向循环。
- 建议:若源站已配置证书,务必选择「完全」或「完全(严格)」。
操作步骤
方法一:开启原生 HTTPS 开关(推荐)
- 在左侧菜单点击「SSL/TLS」。
- 选择子菜单「边缘证书」(Edge Certificates)。
- 找到「Always Use HTTPS」选项,将开关拨至「On」。
- 点击保存(如有)。
方法二:配置页面规则(备选)
- 进入左侧「规则」>「页面规则」,点击「创建页面规则」。
- 输入 URL 模式,建议填写
*example.com/*以覆盖所有子域名和路径。 - 在设置选项中选择「Always Use HTTPS」,状态设为「On」。
- 点击「保存并部署」。
- 注意:免费套餐最多创建 3 条页面规则,请合理规划配额。
生效时间提示:配置修改后通常立即生效,但全球节点 propagation 可能需要 1-5 分钟,若测试未生效请稍后重试。
验证生效方法
配置完成后,可通过以下方式验证跳转是否成功:
- 浏览器测试:在地址栏输入
http://example.com,观察是否自动变为https://example.com。 - 命令行检查:使用 curl 查看响应头状态码。
curl -I http://example.com - 预期结果:返回状态码应为 301 或 302,且 Header 中包含
Location: https://...。 - 缓存清理:若修改后仍跳转旧状态,请使用浏览器无痕模式或清除本地 DNS 缓存测试。
常见故障与排查
- 重定向循环(Too Many Redirects):
- 原因:SSL 模式选为「灵活」但源站强制 HTTPS,或源站与 Cloudflare 之间互相强制跳转。
- 解决:将 SSL 模式改为「完全」或「完全(严格)」,并确保源站证书有效。
- 规则未生效:
- 原因:配置刚修改,全球节点尚未同步。
- 解决:等待 5 分钟后再次测试,或检查是否命中了其他冲突的页面规则。
- 子域名遗漏:
- 原因:页面规则 URL 模式只写了
example.com未加通配符。 - 解决:确保模式为
*example.com/*以覆盖 www 及其他子域。
- 原因:页面规则 URL 模式只写了
参考来源
- 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/