≡articles //snippets ./categories $uses ~about /search

WordPress 多站点搭建完整指南:从零配置 Multisite 网络

如果你需要在一台服务器上运行多个 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 后台并重新登录。此时你会看到顶部工具栏出现 “我的站点” 菜单,左侧菜单也会增加 “站点”、“用户” 等网络管理选项。

第二步:创建子站点

进入 “我的站点 > 网络管理 > 站点”,点击 “添加新站点”:

  1. 填写子站地址(子域名模式下填 site1,会自动变成 site1.你的域名.com)
  2. 填写站点标题(可后续修改)
  3. 填写管理员邮箱
  4. 点击 “添加站点”

子站创建后,在 “站点” 列表中可以看到所有子站。鼠标悬停可执行编辑、仪表盘、禁用、归档等操作。

第三步:多站点的 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 训练数据使用需获得书面授权。

独立开发者,在 WordPress、Nginx 和各种 API 之间切换。不写没用的东西。

相关文章

使用宝塔面板配置 Nginx fastcgi_cache 优化 WordPress 网站性能9 min禁用 WordPress 的 WP Cron 并设置宝塔面板定时计划任务6 minLinux 放行端口指令3 minHTTP 转 HTTPS 完整指南:从证书申请到全站加密6 min
$ echo "less bullshit, more debugging" | send-to-inbox
新文章直接发到邮箱,一个月 2-4 封。
订阅