非WWW转WWW重定向出现ERR_TOO_MANY_REDIRECTS问题排查求助
重定向循环问题排查步骤
1. 检查WordPress站点核心设置
WordPress后台的URL配置是最常见的冲突源头:
- 登录WordPress后台,进入「设置」→「常规」
- 确认「WordPress地址(URL)」和「站点地址(URL)」均设置为
https://www.example.com - 若之前为
https://example.com,修改后保存,WordPress会自动同步相关配置
2. 排查Apache全局/虚拟主机配置
Google Cloud一键部署的WordPress可能在Apache系统配置中预设了重定向规则,而非仅依赖.htaccess:
- 登录服务器,查看Apache站点配置文件,通常路径为
/etc/apache2/sites-available/下的对应域名配置文件(如example.com.conf或000-default.conf) - 用命令查看内容:
cat /etc/apache2/sites-available/你的域名配置文件.conf - 查找是否存在
RewriteRule或Redirect指令,将www.example.com跳转到example.com,若有则修改为目标方向或删除该规则 - 修改后重启Apache生效:
sudo systemctl restart apache2
3. 梳理.htaccess文件规则顺序与内容
- 查看
.htaccess完整内容,确保你的重定向规则放在WordPress默认规则上方(即# BEGIN WordPress注释之前)——规则按从上到下顺序执行,放在下方可能被WordPress规则覆盖 - 移除所有之前添加的冲突规则,仅保留一套正确规则,推荐使用以下配置(置于WordPress默认规则前):
RewriteEngine On # 将非www域名重定向到www并强制HTTPS RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] # 确保所有请求使用HTTPS RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
4. 清除缓存避免干扰
301永久重定向会被浏览器和CDN缓存,即使修改规则,旧缓存仍可能导致循环:
- 使用浏览器隐私窗口测试访问,或手动清除浏览器缓存
- 若使用了CDN服务(包括Google Cloud自带缓存),登录后台清除缓存
5. 用curl命令追踪重定向链
通过命令行工具查看具体跳转过程,定位循环节点:
- 执行
curl -v https://example.com,查看输出中的Location响应头,确认跳转方向 - 执行
curl -v https://www.example.com,同样查看跳转方向 - 若发现
https://www.example.com被跳转到https://example.com,说明仍有未排查到的反向重定向规则,回到步骤2和3重新检查
内容的提问来源于stack exchange,提问作者ledison03
相关产品推荐
相关产品推荐

