本文约 2,669 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:多站点不是”多装几个 WordPress”
当你需要运营多个站点(城市分站、多品牌、多语言子站、客户站点托管),有两种做法:装 N 个 WordPress,或者开一个多站点网络。
多站点(Multisite)的优势:一套核心、一次更新、统一用户体系、共享插件主题库。缺点是:子站之间耦合,一个子站拖垮数据库会影响全部;部分插件不兼容;备份和迁移复杂度上升。
先看清楚这两面,再决定要不要开。
原理分析:多站点在数据库层做了什么
启用多站点后,数据库会多出几张全局表:
wp_blogs 所有子站列表
wp_site 网络信息
wp_sitemeta 网络级配置
wp_users 用户(全局共享一套)
wp_usermeta 用户能力(按站点区分)
wp_registration_log
wp_signups
每个子站有自己的内容表,表名带站点 ID:
wp_2_posts 子站 2 的文章
wp_2_postmeta
wp_2_options
wp_2_terms
...
主站用 wp_(ID=1),其余按创建顺序递增。上传目录也按站点分:wp-content/uploads/sites/2/。
保姆级实操
第一步:先备份,再操作
wp db export before-multisite.sql
第二步:启用常量
在 wp-config.php 的 /* 好了!请不要再继续编辑 */ 之前加:
define('WP_ALLOW_MULTISITE', true);
第三步:通过网络安装向导
后台 → 工具 → 配置网络(Network Setup):
- 地址结构选子目录(子域名需要泛解析,另说);
- 网络标题、管理员邮箱填好;
- 点”安装”。
第四步:按提示写入配置
向导会给出两段代码。第一段加进 wp-config.php(同样在 wp-settings.php 之前):
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'mimangfei.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
第二段替换 .htaccess(Apache):
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# 上传文件直出
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
Nginx 用户需要手工写规则,LiteSpeed/宝塔一般用 Apache 规则即可:
if (!-e $request_filename) {
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
第五步:重新登录并进入网络后台
重新登录后,后台左上角出现”我的站点 → 网络管理”。
第六步:创建子站
网络管理 → 站点 → 添加新站点:
- 站点地址(子目录名,如
shanghai); - 站点标题;
- 管理员邮箱(可新建用户或指定已有用户)。
创建后访问 https://mimangfei.com/shanghai/。
第七步:插件与主题管理
网络管理 → 插件,可”网络启用”。网络启用的插件对所有子站生效且子站无法停用。
主题需要在”网络管理 → 主题”里先”网络启用”,各子站才能在外观里看到。
常见踩坑与失败案例
- 子站 404 —— 九成是伪静态规则没写对。子目录模式必须让
/子站名/wp-admin与/子站名/xxx.php重写到真实的wp-admin/xxx.php。 - 子站后台可以进,前台样式全丢 —— 站点 URL 与 home 不一致,用
wp site list检查,或用wp --url=站点域名 option get home查看。 - 案例:某用户在已有站点上启用多站点,但站点已运行超过一个月。WordPress 官方提示”子域名安装要求站点不超过一个月”——这条限制只针对子域名模式,子目录模式不受此限制,但仍有插件兼容性风险。
- 插件数据混乱 —— 网络启用的插件,其设置项存在主站的
wp_options里;单站启用则存在子站的wp_2_options。混用会导致”明明改了设置却不生效”。 wp-config.php常量位置错误 —— 放在文件末尾会导致网络启用失败。- 备份与迁移变复杂 ——
mysqldump整个库可以,但单独导出一个子站非常麻烦,需要工具支持。
如何关闭多站点还原为单站(概要):备份 → 删除多站点常量与重写规则 → 把子站表 wp_2_* 改名为 wp_* → 修正 uploads/sites/2/ 路径 → 清理 wp_blogs 等全局表 → wp search-replace 修正 URL。操作风险高,务必先备份。
总结
多站点适合”统一管理一批结构相似的小站”这类场景,能省下大量更新维护时间。但它把风险也集中了:数据库是单点,插件兼容性需要逐个验证,备份迁移比单站复杂得多。我的建议是:先在一台测试机上完整跑一遍创建、备份、恢复流程,确认自己能处理故障,再上生产。如果只是两三个站点,独立安装反而更省心。
