WordPress迁移至AWS EC2新域名后出现无限重定向循环如何解决
WordPress跨域名迁移无限重定向问题修复步骤
1. 校验wp-config.php配置项
- 打开站点根目录
/var/www/html/wp-config.php文件,检查是否存在WP_HOME、WP_SITEURL的硬编码配置,如果存在直接将值修改为你的域名B,没有也可以添加以下两行临时固定站点地址,优先覆盖数据库配置:
define( 'WP_HOME', 'https://你的域名B' ); define( 'WP_SITEURL', 'https://你的域名B' );
- 注意:配置中的协议头(http/https)需要和你当前站点实际访问协议完全一致,协议不匹配是触发重定向循环的最常见原因
- 如果你使用了AWS ALB、CDN等中间层做SSL卸载,EC2实例本身用HTTP协议提供服务,需要额外添加以下配置避免WordPress识别协议错误:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; }
2. 清理Apache配置与.htaccess规则
- 检查Apache虚拟主机配置文件(通常路径为
/etc/httpd/conf.d/站点配置.conf(CentOS/Amazon Linux系)或者/etc/apache2/sites-available/站点配置.conf(Debian/Ubuntu系)),确认没有配置指向域名A的错误跳转规则,也没有协议强制跳转规则和实际配置不一致。 - 备份原有
.htaccess文件后,替换为WordPress默认规则,排除自定义跳转规则导致的问题:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
- 修改完成后执行
systemctl restart httpd(CentOS/Amazon Linux系)或者systemctl restart apache2(Debian/Ubuntu系)重启Apache服务生效。
3. 清理数据库中残留的旧域名配置
- 仅修改
home和siteurl两个配置无法覆盖所有旧域名引用,主题、插件、文章内容中仍可能存在大量域名A的残留,特别是序列化存储的配置数据,直接执行SQL替换会破坏序列化结构导致异常,推荐两种安全替换方式:- 方式一:登录WordPress后台安装搜索替换类插件,按照插件指引完成全局新旧域名替换,操作可视化无需接触命令行
- 方式二:使用wp-cli工具执行替换,进入站点根目录
/var/www/html后执行命令:wp search-replace 'https://域名A' 'https://域名B' --precise --all-tables
4. 清理所有缓存
- 清除浏览器本地缓存,或使用无痕模式访问测试,避免本地缓存旧的跳转规则干扰测试结果。
- 如果你之前安装了缓存类插件(如WP Rocket、WP Super Cache等),直接删除
/var/www/html/wp-content/cache目录下的所有缓存文件。 - 如开启了CDN、负载均衡缓存服务,执行一次全量缓存刷新。
内容的提问来源于stack exchange,提问作者gilad s
相关产品推荐
相关产品推荐

