本文约 2,402 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。
引言
域名换了,前台新域名访问一切正常,可当你敲进 新域名.com/wp-admin 想进后台时,浏览器地址栏却「唰」地一下跳回了旧域名,然后旧域名早已解析失效,于是页面打不开或者提示无法访问,后台彻底进不去。这种情况非常常见,尤其是站点只在前台改过域名、或者迁移时漏改了数据库里的站点地址。
更麻烦的是,跳转发生在服务端重定向阶段,你连登录框都看不到,想进后台改设置都无从下手。别急,这不是账号或密码的问题,而是 WordPress 记着「我的家(siteurl)在旧域名」,所以一切后台相关的请求都被它往旧站引。只要把这两处地址改成新域名,问题立刻消失。下面给出两种不依赖后台的操作办法。
故障原因分析
wp_options里的siteurl指向旧域名。 这一项决定 WordPress 核心文件地址,后台登录、脚本加载都依赖它,值不对就会往旧站跳。
home项仍是旧域名。home是访客看到的首页地址,两者只要有一个没改,就会出现前台正常但后台乱跳的错位现象。
wp-config.php里写死了旧地址。 少数站点在配置文件里用define('WP_HOME', ...)和define('WP_SITEURL', ...)硬编码了域名,它优先于数据库设置,改数据库也无效。
- 缓存或 CDN 记着旧跳转。 对象缓存、CDN、浏览器缓存里存了旧的重定向响应,让人误以为没改成功。
- .htaccess 里存在旧域名跳转规则。 有些站点曾做过域名跳转,规则残留会把新站流量导向旧域名。
分步解决方案
由于后台进不去,所有修复都要在「后台之外」完成。下面两种方法任选其一即可。
方法一:改数据库里的两个地址(最常见)
进 phpMyAdmin 或宝塔的数据库管理,选中站点的数据库,执行:
-- 先看清当前值
SELECT option_id, option_name, option_value FROM wp_options
WHERE option_name IN ('siteurl', 'home');
-- 改成新域名(注意换成你的实际域名,带协议,结尾不要加斜杠)
UPDATE wp_options SET option_value = 'https://newdomain.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://newdomain.com' WHERE option_name = 'home';
改完直接访问 https://newdomain.com/wp-admin,通常就能看到登录框了。
方法二:在 wp-config.php 里强制指定(配置被写死时)
如果你改完数据库后台还是往旧域名跳,说明域名可能被写死在配置文件里。编辑网站根目录的 wp-config.php,在 / That's all, stop editing! / 这一行之前,加上:
// 文件路径:网站根目录/wp-config.php
// 强制指定站点地址,优先级高于数据库设置
define('WP_HOME', 'https://newdomain.com');
define('WP_SITEURL', 'https://newdomain.com');
保存后刷新,后台地址会被强制纠正到新域名。待一切正常后,建议保留这两行,可避免以后再被数据库里的旧值带偏。如果你确认数据库已改好,也可以删掉它们。
方法三:清理残留的跳转与缓存
如果仍被跳转,排查三处:
- 打开
.htaccess,查找是否含旧域名的RewriteRule或Redirect规则,有就删除。 - 清空浏览器缓存,或用无痕窗口访问测试,排除本地缓存的误导。
- 若启用了 CDN 或对象缓存(Redis),刷新缓存后再试。
处理完之后,建议顺手把「设置 → 常规」里的两项地址和「设置 → 固定链接」都确认一遍,并重新保存一次固定链接结构,让站内所有链接都按新域名重新生成。这样不仅能解决后台跳转旧域名的问题,还能顺带消除文章内链、缩略图等位置残留的旧地址。如果你还想更彻底一点,可以用 WP-CLI 执行一次全库域名替换,把 wp_posts、wp_postmeta 里散落的旧域名一次性清干净,避免前台个别链接仍指向旧站。
常见踩坑点
- 只改了
home没改siteurl。 这两项要同时改,漏一个就还会跳。 - 域名结尾多加了斜杠。
https://newdomain.com/末尾的斜杠在部分场景下会导致地址拼接出错,规范写法不带结尾斜杠。 - 协议搞错。 站点是 https 却填了
http://,会引发跳转或重定向问题,要和实际启用证书的协议一致。 - 配置文件与数据库冲突。
wp-config.php里定义了常量时数据库设置被忽略,改谁都要先确认另一处。 - 没考虑 www 前缀。
www.newdomain.com和newdomain.com在 WordPress 看来是不同地址,要和解析、证书保持一致。 - 改完不重启缓存服务。 Redis、Memcached 等把旧值缓存住了,改完必须清缓存才能生效。
总结
换域名后后台进不去、自动跳回旧域名,根源在 siteurl 和 home 这两项站点地址没有同步更新。因为进不了后台,修复只能绕过它:优先去数据库里把这两项改成新域名,如果配置被写死,就在 wp-config.php 里用 WP_HOME 和 WP_SITEURL 强制覆盖,最后清理残留跳转规则与缓存。掌握了换域名后后台无法登录的处理套路,你就再也不会被一个小小的域名配置卡住,也不会因为慌神而误删数据或重装站点。
