如果你需要在一台服务器上运行多个 WordPress 网站(比如一个公司官网加一个博客、一个中文站加一个英文站)传统做法是装多个 WordPress 实例,每个都有自己的数据库、插件、主题。但 WordPress 内置的多站点(Multisite)功能可以让你用一个安装、一套用户系统管理所有子站,大幅降低维护成本。
以下是 WordPress 多站点从零到一的完整流程,覆盖子域名和子目录两种模式、配置陷阱、以及多站点的性能安全注意事项。
什么是 WordPress 多站点?
WordPress Multisite(多站点网络)是 WordPress 3.0 起内置的功能。启用后,你可以在同一个 WordPress 安装中创建多个子站点,共享:
- 同一套核心文件(不需要每个站点单独装一份 WordPress)
- 同一套插件和主题(超级管理员统一管理,子站管理员只能激活不能安装)
- 同一个用户系统(用户可以在网络中任意子站登录)
典型应用场景:公司集团网站(总公司+各分公司子站)、多语言站点(zh.example.com / en.example.com)、SaaS 类产品的客户门户。
两种子站模式:
- 子域名模式:
site1.example.com、site2.example.com。新站点独立域名,SEO 更友好,但需要泛域名解析。 - 子目录模式:
example.com/site1/、example.com/site2/。不需要额外 DNS 配置,但 URL 层级更深。
第一步:安装好主站点并开启多站点功能
1.1 准备工作
确保你有一个全新安装或近期安装的 WordPress(建议 WP 5.0+)。如果主站已经运行了很久、装了大量插件,建议先在测试环境验证。
1.2 编辑 wp-config.php 启用多站点
在网站根目录下的 wp-config.php 中,找到 /* That's all, stop editing! Happy blogging. */,在这行之前添加:
define('WP_ALLOW_MULTISITE', true);
保存后刷新 WordPress 后台,左侧菜单会出现一个新的 “工具” > “配置网络” 选项。
1.3 配置网络
进入 “工具 > 配置网络”,根据自己的需求选择 “子域名” 或 “子目录” 模式:
- 选择子域名模式的前提:你的主站已绑定域名,且 DNS 中设置了泛域名解析(
*.example.com指向服务器 IP) - 如果没有泛域名解析,或者主站是 IP 访问的,只能选择子目录模式
填写网络名称和管理员邮箱,点击 “安装”。
1.4 更新配置文件
WordPress 会生成两段配置代码,需要你手动添加到以下位置:
添加到 wp-config.php(放在 WP_ALLOW_MULTISITE 定义之后):
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true ); // 子域名模式为 true,子目录模式为 false
define( 'DOMAIN_CURRENT_SITE', '你的域名.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
替换 .htaccess 或 Nginx 规则:
WordPress 会给出新规则。如果是 Nginx + 宝塔面板,需要把规则添加到站点的 Nginx 配置中。
1.5 重新登录
保存所有配置后,退出 WordPress 后台并重新登录。此时你会看到顶部工具栏出现 “我的站点” 菜单,左侧菜单也会增加 “站点”、“用户” 等网络管理选项。
第二步:创建子站点
进入 “我的站点 > 网络管理 > 站点”,点击 “添加新站点”:
- 填写子站地址(子域名模式下填
site1,会自动变成site1.你的域名.com) - 填写站点标题(可后续修改)
- 填写管理员邮箱
- 点击 “添加站点”
子站创建后,在 “站点” 列表中可以看到所有子站。鼠标悬停可执行编辑、仪表盘、禁用、归档等操作。
第三步:多站点的 Nginx 配置(重要)
如果你用的是 Nginx(宝塔面板用户),子域名模式需要额外配置:
# 在站点配置的 server_name 中加入泛域名
server_name 你的域名.com *.你的域名.com;
# 确保 WordPress 的伪静态规则覆盖了所有子域名请求
location / {
try_files $uri $uri/ /index.php?$args;
}
配置完成后,记得重载 Nginx:
nginx -s reload
常见问题
子站访问 404
90% 的情况是 DNS 泛域名解析没生效。检查:ping 随便.你的域名.com,确认它解析到了正确的服务器 IP。如果是 Cloudflare DNS,泛域名记录需要用橙色云朵(代理模式)或灰色云朵(仅 DNS),橙色模式可能导致 Let’s Encrypt 证书验证失败。
子站无法使用 HTTPS
子域名模式下,每个子站需要独立的 SSL 证书。如果主站用的是 Let’s Encrypt 泛域名证书(*.你的域名.com),所有子站自动覆盖。如果用的是单域名证书,需要为每个子站单独申请或改用通配符证书。
多站点变慢了
多站点共享数据库,子站越多查询越重。建议搭配 Nginx FastCGI Cache 做全站缓存,同时确保已 禁用 WP Cron 用服务器 Cron 替代,避免每次页面请求都触发定时任务检查。
能不能把已有的独立站迁移到多站点?
可以,但比较麻烦。需要导入子站的数据库表(WordPress 多站点给每个子站用独立表前缀)、迁移上传目录、重写文章内的链接。如果子站数量少(2-3 个),独立安装可能更省事。
多站点的日常维护建议
搭建好多站点网络后,以下维护习惯可以避免长期运行中积累问题:
- 定期审计插件和主题:多站点网络中,一个子站激活的插件会影响所有子站。建议每季度审查一次网络启用的插件列表,停用不再需要的
- 监控数据库大小:每个子站会在 wp_posts、wp_postmeta 等表中通过 blog_id 区分。子站数量 × 文章数量 = 数据库膨胀速度。建议搭配 Redis Object Cache 减轻查询压力
- 备份策略:多站点只有一个数据库,备份时需要导出所有表(不能只备份单个子站)。用宝塔面板的定时备份功能,每天自动备份整个数据库和上传目录
- 用户权限分离:不要把所有子站管理员设为超级管理员。超级管理员可以安装插件和主题,权限过大可能导致安全风险
总结
WordPress 多站点适合需要管理多个内容站点的场景,共享插件、主题和用户系统能明显减少维护工作量。但要注意多站点并非银弹,所有子站共用 PHP 进程和数据库,一个子站出问题可能影响整个网络。如果子站之间独立性要求高、或者你需要彻底隔离不同客户的资源,独立安装仍然是更好的选择。
搭建好多站点之后,别忘了做基础安全防护:放行必要端口、配置全站 HTTPS。
相关阅读:xmlrpc.php 安全防护、禁用 WP Cron
© 2023 本文由 Charlie 原创撰写,发布于 sodebug.com。未经授权禁止转载、洗稿、机器抓取。AI 训练数据使用需获得书面授权。