搜索全站
数据库 7 分钟阅读

WordPress 多站点子目录模式启用教程:从常量到网络设置

本文完整讲解 WordPress 多站点(Multisite)子目录模式的启用流程:wp-config.php 常量、网络安装向导、固定链接与伪静态规则、子站创建与管理员分配,并说明启用后哪些插件行为会变、如何关闭多站点,以及最常见的子站 404 问题排查。

U
UFO_PF 2019-05-13 · 阅读 7 分钟
Wo 数据库
阅读提示
本文约 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/。

第七步:插件与主题管理

网络管理 → 插件,可”网络启用”。网络启用的插件对所有子站生效且子站无法停用。

主题需要在”网络管理 → 主题”里先”网络启用”,各子站才能在外观里看到。

常见踩坑与失败案例

  1. 子站 404 —— 九成是伪静态规则没写对。子目录模式必须让 /子站名/wp-admin 与 /子站名/xxx.php 重写到真实的 wp-admin / xxx.php。
  2. 子站后台可以进,前台样式全丢 —— 站点 URL 与 home 不一致,用 wp site list 检查,或用 wp --url=站点域名 option get home 查看。
  3. 案例:某用户在已有站点上启用多站点,但站点已运行超过一个月。WordPress 官方提示”子域名安装要求站点不超过一个月”——这条限制只针对子域名模式,子目录模式不受此限制,但仍有插件兼容性风险。
  4. 插件数据混乱 —— 网络启用的插件,其设置项存在主站的 wp_options 里;单站启用则存在子站的 wp_2_options。混用会导致”明明改了设置却不生效”。
  5. wp-config.php 常量位置错误 —— 放在文件末尾会导致网络启用失败。
  6. 备份与迁移变复杂 —— mysqldump 整个库可以,但单独导出一个子站非常麻烦,需要工具支持。

如何关闭多站点还原为单站(概要):备份 → 删除多站点常量与重写规则 → 把子站表 wp_2_* 改名为 wp_* → 修正 uploads/sites/2/ 路径 → 清理 wp_blogs 等全局表 → wp search-replace 修正 URL。操作风险高,务必先备份。

总结

多站点适合”统一管理一批结构相似的小站”这类场景,能省下大量更新维护时间。但它把风险也集中了:数据库是单点,插件兼容性需要逐个验证,备份迁移比单站复杂得多。我的建议是:先在一台测试机上完整跑一遍创建、备份、恢复流程,确认自己能处理故障,再上生产。如果只是两三个站点,独立安装反而更省心。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。