什么是重定向循环?

你的网站设置了一个规则,当用户访问 A 页面时,服务器会将其重定向到 B 页面,但 B 页面又有规则,要求用户必须回到 A 页面,浏览器就在 A 和 B 之间不停地“打转”,形成一个无法停止的循环,浏览器为了防止这种情况无限发生,最终会显示错误提示:“此网页包含重定向循环”。

此网页包含重定向循环 wordpress
(图片来源网络,侵删)

一个常见的比喻: 你让朋友给你寄一个包裹,但你在地址上写着“如果找不到,就寄给张三”,而张三的地址上又写着“如果找不到,就寄回给你”,邮递员就会在这两个地址之间来回跑,永远也送不到包裹。


导致重定向循环的常见原因(排查重点)

90% 的 WordPress 重定向循环问题都源于以下几个原因,请按照顺序逐一排查:

WordPress 地址 (URL) 和 站点地址 (URL) 设置错误 (最常见原因)

这是最首要、最可能的原因,这两个地址在 WordPress 后台的 设置 > 常规 中设置。

  • WordPress 地址 (URL): 指你的 WordPress 程序文件存放的地址。通常应该是 https://www.yourdomain.com
  • 站点地址 (URL): 指你的网站访问者实际访问的地址。

问题场景:

此网页包含重定向循环 wordpress
(图片来源网络,侵删)
  • 你刚刚将网站从 http 迁移到 https,但只修改了站点地址,忘记修改 WordPress 地址,或者反之。
  • 你将网站从 www 版本迁移到了非 www 版本,但两个地址设置不一致。
  • 你在本地(如 MAMP、XAMPP)开发,但这里的地址(如 http://localhost:8888)没有被正确设置。

解决方法:

  1. 进入你的网站根目录,找到 wp-config.php 文件。
  2. 在文件开头 <?php 的后面,添加以下两行代码,临时绕过 WordPress 的地址检查,让你能正常登录后台:
    define('WP_HOME', 'https://www.yourdomain.com');
    define('WP_SITEURL', 'https://www.yourdomain.com');

    请务必将 https://www.yourdomain.com 替换成你自己的正确网站地址。

  3. 保存 wp-config.php 文件并上传回服务器。
  4. 你应该可以正常访问你的网站后台了。
  5. 进入 设置 > 常规,检查并确保 WordPress 地址 (URL)站点地址 (URL) 都是你期望的正确地址(都填入 https://www.yourdomain.com)。
  6. 保存更改。
  7. 登录 FTP 或文件管理器,删除刚才在 wp-config.php 中添加的两行代码。
  8. 刷新网站,问题应该就解决了。

强制 HTTPS 设置冲突

即使你在后台设置了正确的 HTTPS 地址,如果服务器配置不正确,仍然会循环。

  • 问题场景:
    • 你的 SSL 证书有效,但服务器上的 .htaccess 文件或服务器配置(如 Nginx)强制将所有 HTTP 请求重定向到 HTTPS,但 WordPress 的地址里还写着 http
    • 你的 .htaccess 文件里有错误的重定向规则。

解决方法:

此网页包含重定向循环 wordpress
(图片来源网络,侵删)
  1. 检查你的 .htaccess 文件(位于网站根目录),确保它包含类似下面这样的正确规则,并且没有冲突的重定向:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

    如果文件中有其他强制重定向到 HTTP 或 HTTPS 的规则,请暂时注释掉(在行首加 )或删除,然后测试。

  2. 强制开启 HTTPS (推荐方法):

    • 安装并激活一个插件,如 Really Simple SSL
    • 激活后,插件会自动检测你的 SSL 证书,并帮你正确修改 WordPress 地址、.htaccess 文件和服务器设置,通常一键就能解决所有 HTTPS 相关的重定向问题。

不兼容的插件或主题

某个新安装或更新的插件(尤其是缓存、安全、会员、登录相关的插件)或主题可能会产生错误的重定向规则。

解决方法:

  1. 通过 FTP/文件管理器排查:

    • 进入网站根目录下的 wp-content 文件夹。
    • 重命名 plugins 文件夹为 plugins_old,这会暂时禁用所有插件。
    • 如果网站恢复正常,说明问题出在某个插件上,将 plugins_old 改回 plugins,然后逐个重命名插件文件夹(每次禁用一个),直到找到导致问题的元凶,然后删除或更新它。
    • 用同样的方法排查 themes 文件夹,将当前使用的主题文件夹重命名,看看是否是主题导致的问题。
  2. 通过数据库排查(如果无法登录后台):

    • 登录你的数据库管理工具(如 phpMyAdmin)。
    • 选择你的 WordPress 数据库。
    • 找到 wp_options 表(如果你的前缀不是 wp_,请找到对应的前缀)。
    • 找到 option_nameactive_pluginsstylesheet 的记录。
    • active_plugins 存储了激活的插件,你可以暂时清空其值来禁用所有插件。
    • stylesheet 存储了当前使用的主题,你可以将其值更改为默认主题(如 twentytwentythree)来切换主题。

.htaccess 文件损坏或包含错误规则

.htaccess 文件是 Apache 服务器的配置文件,一个错误的规则就可能导致重定向。

解决方法:

  1. 通过 FTP/文件管理器连接你的网站。
  2. 找到根目录下的 .htaccess 文件。
  3. 先备份这个文件(下载到本地或重命名)。
  4. 删除或重命名服务器上的 .htaccess 文件。
  5. 尝试访问你的网站,如果网站可以访问了(但样式可能丢失),说明问题就在这个文件里。
  6. 登录 WordPress 后台,进入 设置 > 固定链接,什么都不用改,直接点击“保存更改”,WordPress 会自动生成一个新的、正确的 .htaccess 文件。

服务器配置问题

如果以上方法都无效,可能是服务器层面的配置问题,Nginx 或 Apache 的虚拟主机配置错误。

  • 问题场景:
    • Nginx 配置文件中的 return 301 指令指向了错误的地址。
    • Apache 的虚拟主机配置中有冲突的重定向指令。

解决方法: 这个通常需要联系你的主机服务商(如 Bluehost, SiteGround, 阿里云, 腾讯云等)的技术支持,让他们检查服务器配置,你可以告诉他们你遇到了重定向循环问题,并怀疑是服务器配置导致的。


快速排查清单

遇到重定向循环,请按以下步骤操作:

  1. 检查后台设置: 立即检查 设置 > 常规 中的 WordPress 地址和站点地址是否正确且一致。
  2. 使用 wp-config.php 临时修复: 如果地址错误,用 wp-config.php 的方法强制跳转到正确地址,再去后台修改。
  3. 处理 HTTPS: 安装 Really Simple SSL 插件,一键解决 HTTPS 问题。
  4. 禁用插件/主题: 通过重命名文件夹的方式,排查是哪个插件或主题引起的冲突。
  5. 重置 .htaccess 备份并删除 .htaccess 文件,让 WordPress 重新生成一个。
  6. 联系主机商: 如果以上所有步骤都无效,那很可能是服务器配置问题,请联系你的主机提供商。

按照这个流程,绝大多数 WordPress 重定向循环问题都能被顺利解决,祝你成功!