WordPress Multisite 是一项内置功能,允许你从单个 WordPress 安装运行多个网站。与其为每个网站维护单独的 WordPress 安装不同,你可以从一个网络管理员仪表盘管理所有网站 — 共享相同的代码库、插件和主题,同时保持每个网站的内容和设置完全隔离。本指南将引导你完成子域名模式设置,其中每个子站点位于自己的子域名上,如 shop.yourdomain.com 或 blog.yourdomain.com。
为什么选择子域名模式?
WordPress Multisite 支持两种 URL 结构:子域名和子目录。子域名模式是大多数用例中更灵活的选择:
- 独立外观的 URL — 每个子站点有一个干净、品牌化的 URL,看起来与主域名不同,适合多个客户端或部门。
- 一个通配符 SSL 覆盖一切 — 单个
*.yourdomain.com证书保护你创建的每个子站点,无需颁发额外证书。 - 在现有 WordPress 安装上运行 — 与子目录模式不同,子域名模式可以在任何运行时间的 WordPress 网站上激活。
- 易于扩展 — 从网络管理员面板添加新子站点只需几秒钟,无需新的服务器配置。
- 集中式插件和主题管理 — 更新一次插件,每个子站点立即继承新版本。
前置要求
启用 Multisite 之前,确保下面清单中的每一项都已就位。缺少任何一项都会导致子站点无法加载。
| 要求 | 详情 | 必需? |
|---|---|---|
| 通配符 DNS A 记录 | *.yourdomain.com 指向你的服务器 IP |
必需 |
| 通配符 SSL 证书 | 覆盖 *.yourdomain.com |
强烈推荐 |
| PHP 8.0+ / MySQL 5.7+ | WordPress 6.x 需要最少 PHP ≥ 7.4 | 必需 |
| Apache mod_rewrite / Nginx 重写 | 通过 .htaccess 启用 WordPress URL 重写 | 必需 |
| 最近的完整备份 | 在继续之前备份文件和数据库 | 强烈推荐 |
第 1 步 — 在 wp-config.php 中启用 Multisite
通过 FTP、你的主机文件管理器或 SSH 打开 WordPress 根目录中的 wp-config.php。在读取 /* That's all, stop editing! */ 的行之上添加以下行:
/* Enable WordPress Multisite */ define( 'WP_ALLOW_MULTISITE', true );
保存文件并刷新你的 WordPress 管理员仪表板。现在将出现一个新菜单项,工具 › 网络设置。
第 2 步 — 运行网络设置向导
进入 工具 › 网络设置。系统会要求你选择 URL 结构:
- 子域名 — 选择此选项以获得本指南中涵盖的
site1.yourdomain.com格式。 - 子目录 — 产生
yourdomain.com/site1格式(此处未涵盖)。
输入网络标题(例如"我的 WordPress 网络")和管理员电子邮件地址,然后单击安装。WordPress 将显示你需要添加到文件中的两个代码片段。
代码片段 1 — 添加到 wp-config.php
define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', 'yourdomain.com' ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', 1 ); define( 'BLOG_ID_CURRENT_SITE', 1 );
将此块粘贴到你在第 1 步中添加的 define( 'WP_ALLOW_MULTISITE', true ); 行之后。
代码片段 2 — 替换 .htaccess 规则
打开 WordPress 根目录中的 .htaccess,并用 WordPress 提供的新规则完全替换现有的 WordPress 重写块。典型示例如下所示:
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
保存两个文件后,WordPress 会要求你重新登录。登录后,进入 我的网站 › 网络管理员来管理网络。
第 3 步 — 添加通配符 DNS 记录
对于 shop.yourdomain.com 这样的子域名来解析,你需要在你的域的区域文件中有一个通配符 DNS A 记录。在 AsiaGB 的 DirectAdmin 面板中:
- 转到 DirectAdmin › DNS 管理。
- 选择你的域。
- 点击 添加记录。
- 输入以下值:
Name: * Type: A Value: [Your Hosting Server IP Address] TTL: 14400
你可以在 DirectAdmin › 账户管理器中找到你的服务器 IP,或通过查找你的域的现有 A 记录。保存后,允许 5-30 分钟用于 DNS 传播,然后验证:
nslookup test.yourdomain.com
响应应返回你的服务器 IP 地址。
Cloudflare 提示:如果 Cloudflare 管理你的 DNS,添加一个通配符 A 记录(名称: *, 类型: A, 内容:你的服务器 IP),并将代理状态设置为仅 DNS(灰色云),而不是代理(橙色)。Let's Encrypt 通配符证书需要 DNS-01 质询,如果 Cloudflare 代理通配符记录,HTTP-01 将失败。
第 4 步 — 安装通配符 SSL 证书
通配符 SSL 证书(*.yourdomain.com)保护你创建的每个子站点,而无需每次都需要一个单独的证书。要通过 AsiaGB 上的 DirectAdmin 请求 Let's Encrypt 通配符:
- 转到 DirectAdmin › SSL 证书。
- 选择 Let's Encrypt 免费和自动证书。
- 在域字段中输入
yourdomain.com和*.yourdomain.com。 - 选择 ACME DNS-01 质询方法(通配符需要)。
- 点击 保存。
或者,AsiaGB 提供商业通配符 SSL 证书,可以通过电子邮件或基于文件的方法验证,并在 15 分钟内颁发。使用以下方法验证证书工作正常:
openssl s_client -connect test.yourdomain.com:443 \ -servername test.yourdomain.com 2>/dev/null \ | openssl x509 -noout -subject -altnames
输出应在主题备用名称中包含 DNS:*.yourdomain.com。
第 5 步 — 添加你的第一个子站点
有了 DNS 和 SSL,添加子站点非常简单:
- 转到 我的网站 › 网络管理员 › 网站。
- 点击 添加新的。
- 输入网站地址(子域名 slug) — 例如,输入
shop以创建shop.yourdomain.com。 - 填写网站标题、网站语言和管理员电子邮件。
- 点击 添加网站。
添加网站后,在浏览器中访问 https://shop.yourdomain.com。你应该看到 WordPress 默认主题。访问 https://shop.yourdomain.com/wp-admin 应该调出子站点的仪表板。
第 6 步 — 跨网络管理插件和主题
Multisite 中的插件和主题管理与标准单站点安装的工作方式不同,因为有两个控制级别。
网络激活的插件
在网络级别激活的插件会自动应用于每个子站点,子站点管理员无法停用它。使用此功能进行网络范围的安全、缓存和基本基础设施:
# 通常在网络级别激活的插件 - Wordfence Security (网络范围防火墙和恶意软件扫描) - LiteSpeed Cache (所有子站点的服务器级缓存) - Yoast SEO (一致的 SEO 配置) - WP Mail SMTP (所有子站点的单一外发电子邮件服务器)
按网站插件激活
要允许子站点管理员独立激活插件,请转到 网络管理员 › 设置 › 网络设置并启用"允许网站管理员安装插件"。然后子站点管理员可以激活(但不能安装)网络管理员已上传的插件。
主题
在任何子站点可以使用主题之前,必须在网络管理员级别安装主题。从 网络管理员 › 主题,点击"网络启用"以使主题可用于所有子站点,或从子站点自己的外观设置中基于每个站点启用它。
wp-config.php 中的性能调优
通过一个 WordPress 安装运行多个网站可能会增加内存使用量。这些对 wp-config.php 的补充有助于保持平稳运行:
/* Multisite Performance Tweaks */ // Increase memory for the network define( 'WP_MEMORY_LIMIT', '256M' ); define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // Disable storage quota checks (manage quotas in Network Settings instead) define( 'UPLOAD_SPACE_CHECK_DISABLED', true ); // Limit post revisions per post define( 'WP_POST_REVISIONS', 5 ); // Increase autosave interval (seconds) define( 'AUTOSAVE_INTERVAL', 120 );
如果您的服务器有自定义上传路径配置,请明确定义上传目录以防止路径解析问题:
// Explicitly set the uploads directory define( 'UPLOADS', 'wp-content/uploads' );
故障排除常见问题
启用 Multisite 子域名模式后遇到的大多数问题属于几个重复的类别。
访问子站点时出现"找不到网站"或空白页
这几乎总是意味着通配符 DNS 记录还没有传播,或者网络服务器不接受该子域名的请求。首先用 nslookup shop.yourdomain.com 检查。如果 DNS 正确解析但网站仍然失败,请验证你的 Apache VirtualHost 或 DirectAdmin 配置是否接受通配符子域名请求。在某些 DirectAdmin 设置中,你必须在子域名下创建一个 * 子域名条目以生成相应的虚拟主机配置。
新子站点上的 SSL 错误
如果你使用的是单个 Let's Encrypt 证书而不是通配符,则每次创建子站点时都必须颁发新证书,这很快就变得不切实际。如果还没有,请切换到通配符证书。如果已经有通配符并仍然看到 SSL 错误,请检查证书自动更新是否正常工作以及更新的证书是否仍然覆盖 *.yourdomain.com。
HTTPS 上的重定向循环或混合内容警告
当 WordPress 在数据库中为网站 URL 或主页选项存储了 http:// URL,但服务器强制使用 HTTPS 时,就会发生这种情况。将这些行添加到 wp-config.php:
// Force HTTPS for admin and all sub-sites
define( 'FORCE_SSL_ADMIN', true );
// Required if WordPress sits behind a reverse proxy or load balancer
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
子站点管理员无法看到预期的插件
网络管理员必须先上传和"网络启用"(或向网站提供)插件,然后任何子站点管理员才能看到并激活它。转到 网络管理员 › 插件,查找插件,然后点击"网络激活"或"启用"取决于你的访问模型。
常见问题
WordPress Multisite 子域名模式需要什么样的主机?
你需要支持通配符 DNS 和通配符 SSL 证书的托管,因为每个子站点在自己的子域名上打开,例如 site1.yourdomain.com。你的 DNS 区域必须有一个指向你的服务器的通配符 A 记录,你的 SSL 必须覆盖 *.yourdomain.com。让你编辑自己的 DNS 区域文件并独立安装通配符 SSL 的托管 — 例如 AsiaGB 共享主机(带 DirectAdmin) — 使整个过程变得直截了当。
启用 Multisite 后能继续使用现有插件吗?
大多数插件工作正常。关键区别是只有网络管理员可以在网络级别激活插件。子站点管理员可以为自己的网站激活插件,前提是网络管理员允许。没有按 Multisite 设计的插件在网络激活时可能表现异常。在推出生产之前始终在登台环境中测试。
Multisite 子域名模式和子目录模式有什么区别?
子域名模式(site1.domain.com)适用于全新安装和现有 WordPress 安装,每个子站点 URL 看起来独立 — 理想用于管理多个客户端。一个通配符 SSL 一次覆盖所有子域名。子目录模式(domain.com/site1)跳过 DNS 要求,但只能在全新 WordPress 安装上启用,而不是在已运行超过一个月的 WordPress 安装上。
能否在不丢失数据的情况下从网络删除子站点?
是的,从 网络管理员 › 网站 › 删除。完全删除会移除该子站点的数据库表和上传的文件。要保留内容,在删除前通过子站点上的 工具 › 导出 导出它。存档和垃圾邮件选项隐藏或暂停子站点,而不删除任何数据,当你想暂时暂停而不是永久删除时很有用。