将 Cloudflare 控制台中的 SSL/TLS 加密模式从「灵活」改为「完全」或「完全(严格)」,并确保源站 Nginx 或面板未强制重复跳转 HTTP 到 HTTPS。
先说结论:重定向循环通常是因为 Cloudflare 回源使用 HTTP 而源站强制跳转 HTTPS 导致的冲突,修改加密模式即可解决。
- 先确认:检查 Cloudflare 后台 SSL/TLS 模式是否为「灵活」,源站是否开启了强制 HTTPS。
- 先处理:将 Cloudflare SSL 模式改为「完全」,关闭源站多余的 301 跳转规则。
- 再验证:使用浏览器开发者工具观察网络请求,确认不再出现 301 循环。
快速处理思路
由于 Cloudflare 配置主要通过网页控制台完成,不适用命令行,请按以下逻辑操作:
- 登录 Cloudflare 控制台,进入域名管理页。
- 找到 SSL/TLS 设置,将加密模式从「灵活」切换为「完全」。
- 检查源站(如宝塔面板)的 Nginx 配置,删除重复的 return 301 规则。
- 清除浏览器及 CDN 缓存,重新访问测试。
为什么会这样
根本原因是 Cloudflare 的「灵活」模式与源站的强制 HTTPS 策略发生了协议冲突。
当 Cloudflare 设置为「灵活」模式时,用户到 Cloudflare 是 HTTPS,但 Cloudflare 回源到你的服务器是 HTTP。如果你的服务器(如宝塔面板、WordPress)配置了强制 HTTPS,收到 HTTP 请求后会返回 301 状态码跳转回 HTTPS。Cloudflare 收到跳转指令后再次以 HTTPS 请求源站,源站又因识别问题或配置残留再次跳转,形成死循环。浏览器通常限制重定向次数(约 20 次),超限后报 ERR_TOO_MANY_REDIRECTS 错误。
分步处理
按顺序执行以下步骤,每步完成后观察网站访问状态。
第一步:修改 Cloudflare SSL 模式
登录 Cloudflare 控制台,选择对应域名,点击左侧「SSL/TLS」→「概览」。将加密模式从「灵活」改为「完全」或「完全(严格)」。
- 选「完全」:允许源站使用自签名证书,适合测试环境。
- 选「完全(严格)」:要求源站必须有有效可信证书,适合生产环境。
第二步:检查源站强制跳转配置
如果你使用宝塔面板,进入网站设置→SSL,关闭「强制 HTTPS」开关。点击「配置文件」,搜索return 301 https或rewrite ^(.*)$ https,手动删除或注释掉监听 80 端口的 server 块中的跳转规则。避免 Cloudflare 回源 HTTPS 后,服务器再次判断跳转。
第三步:清理缓存
在 Cloudflare 控制台点击「缓存」→「清除缓存」。本地浏览器使用 Ctrl+Shift+Del 清除 Cookie 和缓存文件,或使用无痕模式测试。
怎么验证是否生效
使用浏览器开发者工具或命令行工具确认重定向链已断开。
方法一:浏览器开发者工具
按 F12 打开开发者工具,切换到「网络」选项卡,访问网站首页。观察请求列表,正常情况应只有一个 200 状态码的主文档请求,不应出现多个 301 或 302 状态码交替出现。
方法二:Curl 命令测试
在终端执行以下命令,观察响应头:
curl -I https://你的域名.com
如果返回HTTP/2 200或HTTP/1.1 200 OK且没有location头,说明修复成功。如果仍看到location: https://...,说明源站仍有跳转规则未清理。
常见坑
- 证书无效导致回源失败:若选择「完全(严格)」模式,源站必须安装有效可信的 SSL 证书,自签名证书会导致 Cloudflare 报 526 错误。
- 宝塔配置残留:仅关闭面板开关可能不彻底,必须检查 Nginx 配置文件中是否残留
return 301语句。 - 多级域名冲突:同时绑定 www 和根域名时,若两者都设置互相跳转,也会形成循环,需统一规范跳转逻辑。
- 缓存固化错误:修改配置后未清除 CDN 或浏览器缓存,用户仍可能访问到旧的 301 跳转响应。
常见问题
为什么 Cloudflare 默认是灵活模式?
灵活模式允许源站不配置 SSL 证书即可启用 HTTPS 访问,适合暂无证书的用户,但会与源站强制 HTTPS 冲突。
修改为完全模式需要源站有证书吗?
需要,「完全」模式允许自签名证书,「完全(严格)」模式必须使用 publicly trusted 证书,否则 Cloudflare 拒绝连接。
修复后还需要关闭源站强制 HTTPS 吗?
建议关闭源站强制跳转,让 Cloudflare 统一处理外层 HTTPS,避免多层判断导致逻辑复杂化。
参考来源
- 宝塔面板网站提示重定向次数过多怎么排查_关闭 Cloudflare 代理或调整严格 HTTPS 模式
- 宝塔面板强制 HTTPS 后出现无限循环重定向怎么办_排查 CDN 设置及清除缓存
- WordPress 网站开启 Cloudflare CDN 后出现无限重定向?3 步快速排查与修复-CSDN 博客
- 正确解决启用 CloudFlare SSL 后导致的循环重定向
- CloudFlare 造成重定向的次数过多
- 使用 CloudFlare CDN 网站遇到「重定向的次数过多」解决方案
- 网站接入 Cloudflare 无法访问或重定向次数过多解决方法 - xFanly - 博客园
- 如何修复宝塔面板配置 SSL 证书后网站循环重定向问题_强制 HTTPS 设置与清理 CDN 缓存
- 解决使用 CloudFlare 导致网站重定向次数过多的问题