必须先改wp_options表里的siteurl和home,否则后台直接302跳回旧域名;二者分别控制wp-admin加载路径和登录页跳转逻辑,须同步设为新域名完整URL(如https://new-site.com),且不得带尾部斜杠。
必须先改 wp_options 表里的 siteurl 和 home,否则后台直接 302 跳回旧域名——这是整个流程的开关,其他操作全建立在这两条记录正确的基础上。
为什么只改 wp_options 的 siteurl 和 home 就能登录后台
WordPress 启动时优先读取这两个值:前者决定 wp-admin、核心 JS/CSS 路径能否加载,后者控制登录页跳转逻辑。只要它们是新域名的完整 URL(如 https://new-site.com),且不带尾部斜杠,后台就能正常打开。常见错误包括:
- 只改了
siteurl没改home,或反过来 - 字段名写成
site_url、homepage等非标准名 - 填了
http://new-site.com却已启用 HTTPS,导致混合内容阻断 JS 加载 - 用了子目录安装(如
https://old.com/blog→https://new.com/blog),但新值漏掉了/blog
改完 wp_options 后仍跳转?立刻检查 wp-config.php
数据库改对了,但后台还是跳旧地址,大概率是 wp-config.php 里硬编码了 WP_HOME 或 WP_SITEURL。PHP 会无视数据库,直接用这两个常量。操作步骤:
- 用 FTP 或 SSH 打开
wp-config.php,搜索define('WP_HOME'和define('WP_SITEURL' - 如果存在,把旧域名替换成新域名;更稳妥的做法是删掉这两行,让 WordPress 回退到数据库取值
- 删掉后务必确认
wp_options中siteurl和home已更新——否则后台立刻 404
批量替换正文和附件链接时,REPLACE() 必须加 WHERE 条件
直接跑 UPDATE wp_posts SET post_content = REPLACE(post_content, 'old.com', 'new.com') 风险极高:可能误替 example-old.com 或破坏序列化数据结构。安全做法是:
- 先用
SELECT预览匹配项:SELECT ID, post_content FROM wp_posts WHERE post_content LIKE '%https://old.com%' LIMIT 5 - 替换时严格匹配协议+域名+斜杠:
REPLACE(post_content, 'https://old.com/', 'https://new.com/'),避免只写old.com - 限定范围:
WHERE post_type = 'post'或WHERE ID BETWEEN 100 AND 500,分批执行 - 对
wp_postmeta表操作前,先排除明显不是 URL 的 meta_key(如_edit_lock、_thumbnail_id)
多站点(Multisite)必须同步改 wp_blogs 和 wp_sitemeta
单站改完 wp_options 不代表多站点生效。主站和每个子站都有独立域名记录,漏改任意一个都会导致对应站点跳转失败:
立即学习“PHP免费学习笔记(深入)”;
-
wp_blogs表的domain字段:存所有子站域名,需逐条更新 -
wp_sitemeta表中siteurl和home:主站点的全局设置,影响网络仪表盘入口 - 如果用了子域名模式(如
blog1.old.com→blog1.new.com),wp_blogs里每条记录都要单独处理
替换完别急着关 phpMyAdmin——立刻刷新 wp_options 表,盯着 siteurl 和 home 两行,确保它们是新域名且没被其他配置覆盖。这是唯一能快速验证“是否真正生效”的动作。



















