本地localhost持续跳转至线上站点,WordPress本地配置无效如何解决?
问题排查与解决方法
本地站点强制跳转线上site1.com的原因及排查步骤
- 最核心的冲突原因:两个本地站点均配置了相同的
http://localhost/作为站点域名,Apache虚拟host对相同ServerName的配置只会加载优先级更高的第一个(也就是你原site1的配置),所以无论怎么切换站点都会跳转到第一个站点对应的旧线上域名。
解决方法如下:- 编辑
/etc/hosts文件添加本地测试域名映射:
127.0.0.1 site1.local 127.0.0.1 site2.local- 分别修改两个站点的Apache虚拟主机配置,将ServerName分别改为
site1.local、site2.local,DocumentRoot对应各自的站点文件目录 - 两个站点的
wp-config.php配置分别修改为对应本地域名:
// site1配置 define('WP_HOME','http://site1.local'); define('WP_SITEURL','http://site1.local'); // site2配置 define('WP_HOME','http://site2.local'); define('WP_SITEURL','http://site2.local');- 重新替换两个站点数据库内的旧线上域名,分别对应替换为
http://site1.local和http://site2.local,重启Apache即可解决站点串流问题
- 编辑
- 若修改后仍存在跳转,按以下顺序排查:
- 排除浏览器缓存问题:301重定向会被浏览器永久缓存,可直接开启无痕模式访问,或执行
curl -I http://site1.local查看响应头,若curl返回200则清浏览器本地缓存即可 - 排查插件/主题强制重定向:将站点
wp-content/plugins文件夹重命名为plugins_bak停用所有插件,测试是否恢复正常;若仍跳转则检查当前主题functions.php文件,是否存在硬编码的重定向规则或旧域名配置 - 排查数据库残留旧域名:执行以下命令全库搜索未替换的旧域名,对遗漏位置做补充替换即可:
mysqldump -u 数据库用户名 -p 对应数据库名 | grep 'site1.com' - 排除浏览器缓存问题:301重定向会被浏览器永久缓存,可直接开启无痕模式访问,或执行
自定义路径404问题解决方法
该问题是WordPress伪静态规则未生效导致,按以下步骤操作即可:
- 启用Apache rewrite模块:
a2enmod rewrite - 编辑对应站点的Apache虚拟主机配置,在
<Directory 站点根目录>段落中修改配置为AllowOverride All,保存后执行systemctl restart apache2重启服务 - 登录对应WordPress后台,进入【设置】→【固定链接】页面,无需修改现有配置直接点击【保存更改】,系统会自动生成所需的
.htaccess伪静态规则,即可解决自定义路径404问题
内容的提问来源于stack exchange,提问作者Myuser03
相关产品推荐
相关产品推荐

