多站点迁移必须同步修改wp_options和wp_sitemeta的siteurl(前者不带尾斜杠,后者必须带)、wp_blogs/wp_site的domain字段、wp-config.php中的DOMAIN_CURRENT_SITE,并用专用工具处理序列化链接,否则导致跳转失败、白屏或404。
wp_options 和 wp_sitemeta 的 siteurl/home 必须同步改,且格式不能错
多站点环境下,wp_options 控制主站前台和后台路径,wp_sitemeta 则管网络级设置——两者都得改,漏一个就会跳转失败或白屏。常见错误是只改 wp_options,或者把 wp_sitemeta 里的 siteurl 写成 home(它没有 home 字段,只有 siteurl)。
关键细节:
-
wp_options中的siteurl和home值必须带协议、不带尾部斜杠,例如https://new-site.com -
wp_sitemeta中的siteurl必须带协议、**结尾必须有斜杠**,例如https://new-site.com/ - 如果用了子目录安装(如
https://old.com/network/→https://new.com/network/),路径部分要一并保留
wp_blogs 和 wp_site 表的 domain 字段不能遗漏
多站点的每个子站记录在 wp_blogs 表里,主站信息存在 wp_site 表中——这两张表的 domain 字段必须全部更新为新域名,否则子站访问 404 或重定向到旧地址。
实操注意点:
-
wp_blogs表里可能有多条记录(对应多个子站),每行的domain都得手动或 SQL 批量替换 -
wp_site表只有一行,它的domain是网络主站域名,必须与wp_sitemeta的siteurl协调一致 - 别用简单
REPLACE()直接扫全表——wp_blogs的path字段可能含斜杠,误操作会破坏子目录结构
wp-config.php 里的 DOMAIN_CURRENT_SITE 必须同步更新
数据库改完,wp-config.php 里那行 define('DOMAIN_CURRENT_SITE', 'old.com'); 如果还留着,WordPress 会强制所有请求路由回旧域名,数据库修改完全失效。
检查和修正步骤:
- 用 SFTP 或主机文件管理器打开
wp-config.php - 搜索
DOMAIN_CURRENT_SITE,把它改成新域名,例如define('DOMAIN_CURRENT_SITE', 'new-site.com'); - 确认没有重复定义——有些模板会写两遍,后一次会覆盖前一次
- 如果启用了子域名模式(
SUBDOMAIN_INSTALL为true),DOMAIN_CURRENT_SITE不能带www.前缀,否则 DNS 解析异常
内容表中的序列化链接必须用专用工具处理
单纯用 phpMyAdmin 的 UPDATE ... REPLACE() 替换文章、页面或自定义字段里的旧域名,会破坏 PHP 序列化字符串(比如 s:12:"old-domain"; 变成 s:12:"new-domain.com";),导致主题选项丢失、Elementor 页面乱码、甚至后台空白。
安全做法只有两个:
- 用
wp-cli search-replace并带上--network和--serialize参数(后者在较新版本默认启用,但建议显式声明) - 用
interconnectit/Search-Replace-DB这类脚本——它会解析序列化结构再重写长度,不是文本暴力替换 - 绝对不要在生产环境直接执行 SQL 批量
REPLACE操作,尤其涉及wp_posts、wp_postmeta、wp_options
修复完别急着测试,先清空浏览器缓存、禁用所有缓存插件、删掉 wp-content/cache/ 目录——多站点的重写规则和站点映射高度依赖缓存状态,残留缓存会导致跳转逻辑错乱。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











