WordPress多站点网络配置教程是指导用户在单个WordPress安装中创建和管理多个站点的操作指南。
启用多站点前的准备工作
在修改任何文件之前,先完成以下准备工作。

备份当前WordPress网站的全部文件,包括根目录下的所有PHP文件、主题、插件以及上传目录。
导出数据库,可以使用phpMyAdmin或WP-CLI执行
wp db export。停用所有插件,避免插件在配置过程中影响站点重写规则或数据库结构。
确认服务器运行的是Apache或Nginx,并且支持URL重写。
如果计划使用子域名模式,需要提前在域名解析服务商处添加泛解析记录,例如将
*.example.com通过A记录指向服务器IP地址。确保WordPress安装目录可写,部分主机在修改
wp-config.php后,后台才能生成网络配置文件。
修改wp-config.php开启多站点功能
通过FTP、SFTP或主机文件管理器打开WordPress根目录下的wp-config.php文件。
找到以下注释行:
/*That'sall,stopediting!Happypublishing.*/
在该注释行之前添加以下代码:
define('WP_ALLOW_MULTISITE',true);保存文件并上传回服务器,该常量会激活WordPress后台的网络配置入口。
如果使用WP-CLI,也可以执行:
wpconfigsetWP_ALLOW_MULTISITEtrue--raw
此时刷新WordPress后台,左侧菜单或工具菜单中会出现“网络设置”选项。
在网络设置页面选择站点模式
进入WordPress后台,点击“工具”下的“网络设置”,如果未出现该菜单,请确认上一步常量是否添加正确。
在“网络设置”页面中,需要选择多站点地址形式:
子域名模式:例如
site1.example.com、site2.example.com,该模式适合需要独立子域名的项目。子目录模式:例如
example.com/site1、example.com/site2,该模式适合主域名已经包含大量内容的站点。
选择后填写网络名称和管理员邮箱,网络名称用于区分整个多站点网络,管理员邮箱用于接收新站点注册通知。
点击“安装”按钮,WordPress会生成两段配置代码。
添加wp-config.php多站点配置代码
WordPress生成的第一段代码需要添加到wp-config.php中,常见内容如下:
define('MULTISITE',true);
define('SUBDOMAIN_INSTALL',true);
define('DOMAIN_CURRENT_SITE','example.com');
define('PATH_CURRENT_SITE','/');
define('SITE_ID_CURRENT_SITE',1);
define('BLOG_ID_CURRENT_SITE',1);其中SUBDOMAIN_INSTALL的值根据所选模式变化,如果选择子目录模式,该值为false。
将这段代码添加到之前添加的WP_ALLOW_MULTISITE常量之后,仍然位于/* That's all, stop editing! */注释之前。
保存wp-config.php文件。
替换.htaccess或Nginx重写规则
WordPress生成的第二段代码用于替换根目录下的.htaccess文件,子域名和子目录模式的重写规则略有不同。
子域名模式下的常见.htaccess规则如下:
RewriteEngineOn
RewriteBase/
RewriteRule^index\.php$-[L]
#addatrailingslashto/wp-admin
RewriteRule^wp-admin$wp-admin/[R=301,L]
RewriteCond%{REQUEST_FILENAME}-f[OR]
RewriteCond%{REQUEST_FILENAME}-d
RewriteRule^-[L]
RewriteRule^(wp-(content|admin|includes).*)$1[L]
RewriteRule^(.*\.php)$$1[L]
RewriteRule.index.php[L]将原有.htaccess中的WordPress规则替换为上述内容,如果.htaccess中只有WordPress默认规则,可直接整体替换。
如果使用Nginx,需要将以下规则添加到站点配置文件的server块中:
if(!-e$request_filename){
rewrite/wp-admin$$scheme://$host$uri/permanent;
rewrite^(/[^/]+)?(/wp-.*)$2last;
rewrite^(/[^/]+)?(/.*\.php)$2last;
rewrite./index.phplast;
}保存后重启Nginx或Apache服务。
重新登录并进入网络管理后台
完成上述文件修改后,退出WordPress当前登录状态,然后重新登录。
登录后,顶部工具栏会出现“我的站点”菜单,点击“我的站点”,展开后可以看到“网络管理”选项。
进入“网络管理”后台后,可以管理整个多站点网络,包括创建站点、管理用户、启用主题和插件等。
如果登录后无法进入后台,通常是因为wp-config.php中的DOMAIN_CURRENT_SITE或PATH_CURRENT_SITE配置不正确,请核对主域名是否与站点实际地址完全一致,包括是否带www。
创建第一个子站点
在“网络管理”后台中,点击左侧菜单“站点”,然后点击“添加新站点”按钮。
填写以下信息:
站点地址:子域名模式下填写子域名前缀,例如
demo;子目录模式下填写路径名称,例如demo。:用于后台识别,可以后续修改。
管理员邮箱:子站点管理员的登录邮箱。
站点语言:选择子站点的后台语言。
点击“添加站点”后,WordPress会创建新的子站点,并自动分配对应的数据库表,每个子站点使用独立的表前缀,默认情况下是在主站点的表前缀后追加2_、3_等数字。
例如主站点表前缀为wp_,第一个子站点的用户表为wp_2_users,文章表为wp_2_posts。
为子站点分配主题和插件
多站点网络中的主题和插件由超级管理员统一控制。
在“网络管理”后台中,点击“主题”菜单,勾选允许子站点使用的主题,然后点击“启用”按钮,只有被网络启用的主题,子站点管理员才能在“外观”中看到并选择。
插件同样需要在“插件”菜单中点击“网络启用”,网络启用的插件会在所有子站点中自动生效,如果选择“启用”,该插件仅对主站点单独生效,子站点无法使用。
子站点管理员默认不能直接安装新主题或插件,必须由超级管理员在网络级别开放相应权限。
配置多站点用户权限
多站点网络中的用户权限与单站点不同。
只有超级管理员可以安装、删除主题和插件,创建新站点,以及修改网络设置。
子站点管理员只能管理自己站点内的内容、主题选项和普通用户,不能修改网络全局配置。
如需将现有用户添加为某个子站点的管理员,可以在“网络管理”后台中点击“用户”,找到对应用户,然后在“站点”栏目下将其分配给目标站点,并设置角色为“管理员”。
新用户可以通过“用户”菜单中的“添加新用户”统一添加,也可以在子站点后台注册,如果开启开放注册,用户注册后会自动成为主站点订阅者,需要超级管理员手动分配站点权限。
处理多站点固定链接和媒体上传
多站点模式下,固定链接默认使用/blog/前缀,可以在“网络管理”下的“站点”列表中编辑每个子站点,修改其固定链接结构。
如果使用子目录模式,子站点的文章地址通常为:
example.com/site1/2024/01/01/hello-world/
如果使用子域名模式,文章地址为:
site1.example.com/2024/01/01/hello-world/
媒体上传目录会统一存放在wp-content/uploads/sites/2/、sites/3/等目录下,每个子站点的媒体文件互不干扰。
如果图片无法显示,需要检查wp-content/uploads/sites/目录是否存在且具有可写权限,同时确认服务器允许访问sites目录下的静态文件。
十一、开启多站点开放注册
如果希望允许用户自行注册新站点,可以在“网络管理”后台点击“设置”,找到“注册设置”栏目。
可以选择以下注册方式:
关闭注册:禁止用户注册新站点。
用户可注册账户:用户可创建普通账户,但不能创建站点。
已登录用户可注册新站点:只有登录后的用户可以创建站点。
开放注册:任何访客都可以注册账户并创建站点。
根据项目需求选择合适的注册方式,开放注册时需要配置注册欢迎邮件、默认角色以及新站点的默认设置。
十二、数据备份与迁移注意事项
多站点网络的数据库备份与单站点不同,所有子站点的数据都存储在同一数据库中,只是使用不同的表前缀,因此备份数据库时必须导出完整数据库,而不是仅导出部分表。
文件备份同样需要包含wp-content/uploads/sites/目录,以及所有主题和插件目录。
迁移多站点网络时需要修改wp-config.php中的DOMAIN_CURRENT_SITE和数据库配置,同时需要更新数据库中的站点域名,可以使用专业的多站点迁移工具或WP-CLI的wp search-replace命令批量替换旧域名。
如果只迁移单个子站点,建议先将主站点导出为普通WordPress站点,再重新建立网络,避免数据库表关联错误。
十三、禁用多站点网络
如果不再需要多站点功能,可以移除wp-config.php中添加的多站点常量,恢复.htaccess中的WordPress默认规则。
但数据库中的多站点表结构不会自动删除,所有子站点数据仍然存在于数据库中,该操作仅会将WordPress恢复为单站点模式,并不删除已经创建的子站点数据。
如需彻底清除网络模式,必须手动清理数据库中多余的站点表,并修正wp_options表中的网络选项。