首页 / 更新 / 文章

重定向次数过多:强制 HTTPS 应该开在哪一侧

发布时间:2026-07-29 15:05:39

CDN 与源站不要同时强制跳转。只保留一处 301/302 到 HTTPS,通常放在 CDN。
浏览器报 “重定向次数过多 / ERR_TOO_MANY_REDIRECTS”,在接入 CDN 后非常常见,而且九成是 HTTPS 策略打架。 ------------------------------------------------ 一、经典错误拓扑 ------------------------------------------------ 用户 -> CDN(强制把 HTTP 301 到 HTTPS) -> 源站(又把请求 301 到 HTTPS 或另一 Host) -> CDN 再处理 -> 循环 还有变种: - 源站强制 www,CDN 或程序又强制非 www。 - 回源是 HTTP,源站 301 到 HTTPS 公网域名,请求再次打到 CDN。 - 应用层(WordPress/Nginx/宝塔)与 CDN 同时开“强制 HTTPS”。 ------------------------------------------------ 二、正确做法 ------------------------------------------------ 1. 只在一处做强制 HTTPS。推荐:CDN 开强制 HTTPS,源站关闭强制跳转,回源用 HTTP 或源站内网/IP 直回。 2. 如果源站必须 HTTPS 回源:CDN 不要再对回源侧制造二次跳转;回源协议选 HTTPS,源站虚拟主机直接 200,而不是 301。 3. www 与根域:只保留一个 canonical,另一边做单次 301,避免双侧互相跳。 ------------------------------------------------ 三、OECDN 上怎么配 ------------------------------------------------ - 域名编辑里的 HTTP 访问开关 / 强制 HTTPS 开关:按业务显式选择,不要默认以为“开了更安全就两边都开”。 - 证书绑定正常、HTTPS 可访问后,再开强制 HTTPS。 - 改完后用无痕模式或 curl -I http://域名 看 Location 是否只跳一次。 ------------------------------------------------ 四、快速验证 ------------------------------------------------ curl -I http://你的域名 curl -I https://你的域名 观察: - HTTP 应最多一次跳到 HTTPS - HTTPS 应直接 200/业务 3xx,不应再跳回 HTTP - Location 主机名不应在 a.com / www.a.com / 回源 IP 之间来回甩 ------------------------------------------------ 五、程序本身跳转过多 ------------------------------------------------ 登录态、伪静态、插件 SEO、多语言域名,也可能自身 301 链过长。此时先绕过 CDN 直连源站复现;源站都循环,修源站;只有过 CDN 才循环,修 CDN/回源协议。
返回更新列表 回首页