为什么WordPress迁移后会自动重定向到旧域,该如何修复?
问题根源分析
WordPress数据库存储的旧域名信息未完全更新是导致自动重定向的主要原因。系统核心文件、主题/插件配置、服务器设置中残留旧域名参数均可能触发301永久重定向机制。
解决方案总览
1. 数据库域名更新
通过phpMyAdmin执行SQL命令:UPDATE wp_options SET option_value = replace(option_value, '旧域名','新域名') WHERE option_name = 'home' OR option_name = 'siteurl';
并检查wp_posts表内容更新。
2. 配置文件验证
检查wp-config.php文件中是否包含define('WP_HOME','旧域名');
或define('WP_SITEURL','旧域名');
硬编码,修改后通过FTP重新上传。
3. 服务器重写规则
删除.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
4. 缓存系统清理
依次执行:清除WordPress缓存插件数据、清空服务器OPcache、删除CDN缓存。推荐使用WP-CLI命令:wp cache flush
5. SSL证书配置
混合内容问题可能导致循环重定向,确保新域名SSL证书正确安装,在数据库中将wp_options
表的siteurl
设置为包含HTTPS的完整地址。
6. 浏览器缓存排除
使用Chrome开发者工具Network面板勾选Disable cache
,或通过快捷键Ctrl+Shift+R
(Windows)/Cmd+Shift+R
(Mac)强制刷新。
7. DNS记录验证
使用dig +trace 新域名
命令检查DNS解析是否完全生效,特别注意TTL值对缓存时间的影响,必要时临时降低TTL数值。
深度检测建议
通过浏览器开发者工具查看Network请求标头,确认返回的Location
字段值。使用curl命令测试:curl -I 新域名URL
观察HTTP状态码和重定向路径。
预防措施
- 迁移前使用专业迁移插件(如Duplicator)序列化数据处理
- 修改数据库前缀避免残留配置冲突
- 在本地或临时域名完成全站测试后再进行正式迁移