
网站打开后浏览器提示“该网页无法正常运作 / 重定向次数过多”(Chrome 里的错误代码是 ERR_TOO_MANY_REDIRECTS),说明请求在几个地址之间来回跳转,一直没有落到最终页面。先给结论:最常见的原因是 HTTPS 设置不一致,比如 Cloudflare 的 SSL 模式是 Flexible,而源站又强制跳转 HTTPS;其次是 WordPress 的网站地址设置、插件或服务器规则互相冲突。按下面的顺序排查,大多数情况能在几分钟内定位。
先确认报错长什么样
- Chrome / Edge:“该网页无法正常运作”,下方显示 ERR_TOO_MANY_REDIRECTS;
- Firefox:“页面没有正确重定向”;
- Safari:“Too many redirects occurred”。
这些都是同一类问题:网站在 A 地址跳到 B,B 又跳回 A,浏览器跳了一定次数后主动停止。
第一步:排除浏览器和缓存
- 用无痕窗口打开网址,或换一个浏览器、换手机网络再试;
- 清除该网站的 Cookie 和缓存。有时是旧的登录 Cookie 或缓存的跳转导致的;
- 如果无痕窗口正常、普通窗口不正常,基本就是本地 Cookie 或缓存问题,清除即可。
如果所有浏览器、所有网络都打不开,说明问题在网站或服务器一侧,继续往下查。
第二步:看一下跳转链路
用命令行可以直接看到跳转在哪里循环(把网址换成你自己的):
curl -I -L --max-redirs 8 https://example.com/
输出里每一段的 HTTP/… 301 和 location: 就是一次跳转。如果你看到 http:// 跳到 https://,再跳回 http://,或者 www 与不带 www 的地址互相跳,就找到了循环发生的位置。后面几步都是根据这个现象去对应。
第三步:检查 WordPress 的网站地址
进入后台“设置 → 常规”,对比两项:
- WordPress 地址(URL);
- 站点地址(URL)。
两个地址应该使用同样的协议(都是 https)和同样的主机名(都带 www,或都不带)。如果一个是 http、一个是 https,或者一个带 www、一个不带,就会触发循环。
如果已经打不开后台,可以在网站根目录的 wp-config.php 里临时指定地址(把域名换成你自己的):
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
也可以用 WP-CLI 查看和修改:wp option get siteurl、wp option get home。改完后记得清缓存再测试。
第四步:CDN / Cloudflare 的 SSL 模式
如果网站用了 Cloudflare,这是最值得优先检查的一步。Cloudflare 的 SSL/TLS 加密模式如果设为 Flexible(灵活),它到你源站服务器之间走的是 http。此时如果源站(或 WordPress、插件)又要求“所有请求必须 https”,就会不停地重定向。
- 推荐做法:源站安装了有效证书的话,把模式改为 Full 或 Full (strict);
- 源站暂时没有证书:先在源站配置证书,再改模式。不建议长期使用 Flexible;
- 如果同时开了“始终使用 HTTPS”、WordPress 插件强制 https、服务器强制 https,只保留一处就够,重复设置容易互相打架。
Cloudflare 与其他 CDN 的区别和选择,可以看 Cloudflare vs QUIC.cloud:WordPress CDN 怎么选。
如果网站放在反向代理或负载均衡后面,WordPress 可能识别不到真实的 https,也会引起循环。这时可以在 wp-config.php 里加上判断(仅在你确认代理会传 X-Forwarded-Proto 时使用):
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
第五步:服务器规则、插件和主题
- Apache 的 .htaccess:先把根目录的
.htaccess重命名备份,再访问网站。能打开说明是里面的跳转规则有冲突;回到后台“设置 → 固定链接”点一次保存可重新生成默认规则; - Nginx:检查站点配置里的
return 301或rewrite规则,看是否有两处都在做 http 到 https 或 www 的跳转; - 插件:把
wp-content/plugins目录临时重命名,使所有插件停用,能打开就逐个恢复,找出问题插件。重点怀疑 SSL/HTTPS 强制类、缓存类、重定向类、安全类插件; - 主题:临时切换到默认主题测试。
每次只改一处,改完测试一次,这样才能确定是哪一项起了作用。
第六步:检查域名解析和 www 跳转
- 确认
example.com和www.example.com都解析到了正确的地方; - 只保留一个“主域名”:要么统一跳到带 www,要么统一跳到不带 www,不要在多处(DNS 服务商、CDN、服务器、插件)各设一套相反的规则;
- 刚修改过解析的话,等待生效后再测试。
域名和解析的基础设置,可以参考 WordPress 建站教程:绑定网站域名,域名与 DNS 的统一管理见 SHOPAGG 域名页面。
每天定时出现一次怎么办
如果网站平时正常,只在固定时间段出现一次,要多想想“定时发生的事情”:定时备份、缓存清理、证书续期、计划任务(WP-Cron)或 CDN 回源。可以在出现时立刻用第二步的命令记录跳转链路,同时查看服务器的错误日志,把出现的时间、跳转链路和日志一起保留下来,方便定位。这类问题没有统一答案,要结合自己的服务器环境判断。
仍然无法解决时,准备这些信息
- 出错网址和出现的时间;
- 第二步
curl命令的完整输出; - 是否使用 CDN、反向代理,以及 SSL 模式;
- 最近改过什么(插件、证书、域名、服务器配置);
- 网站的服务器类型(Apache / Nginx 等)。
把这些信息发给技术支持,会比只说“打不开”快得多。你也可以到 SHOPAGG 问答 里描述问题,社区里有类似的实际提问和回答。
常见问题
只有我自己打不开,别人正常,怎么办?通常是本地 Cookie 或缓存问题,先清除后再试。
改了 SSL 模式后还是不行?清除 CDN 缓存和浏览器缓存,并再次用 curl 看跳转链路是否还有循环。
后台也打不开怎么改设置?用 wp-config.php 指定地址,或通过 WP-CLI、数据库修改 siteurl 和 home。修改数据库前请先备份。
说明:本文整理的是该报错的通用排查思路和官方通用配置方法,没有引用具体的网站案例或数据。不同服务器和插件的设置界面可能不同,修改前请先备份网站。
作者:庄朋龙(关于 SHOPAGG)。



