WordPress 多站点功能允许你通过一次安装,管理多个独立的网站。这些网站共用同一套程序核心、插件和主题文件,但各自拥有独立的数据库表(文章、用户、设置等)。这种架构非常适合需要管理多个子站点或不同语言版本网站的场景,能显著降低维护成本。本教程将指导你从零开始,在 Apache 或 Nginx 服务器上完成部署。
---
### 前言介绍
WordPress 多站点模式(Multisite)本质上是将单站点安装扩展为网络。启用后,你可以在后台添加、管理多个子站点,每个子站点有独立的域名或子目录。核心优势在于:一次更新核心、插件、主题,所有子站点同步生效;共享用户系统,实现统一登录;集中管理媒体文件。但需要注意:并非所有插件和主题都兼容多站点模式,部分功能(如自定义站点设置)需要额外配置。本教程假设你已拥有一个正常运行的 WordPress 单站点安装,并具备服务器管理权限(如通过 cPanel、SSH 或云服务商控制台)。
---
### 前置准备
1. **运行中的 WordPress 单站点**:确保你的 WordPress 版本为 5.0 以上,且已安装并能够正常访问。
2. **服务器访问权限**:你需要能够编辑 WordPress 根目录下的 `wp-config.php` 文件和 `.htaccess` 文件(Apache 服务器)或 Nginx 配置文件。如果使用虚拟主机,通常通过文件管理器或 FTP 完成。
3. **备份现有网站**:在修改核心文件前,务必使用插件(如 UpdraftPlus)或手动备份数据库和所有文件。多站点转换不可逆,备份是唯一的安全网。
4. **域名解析(可选)**:如果计划使用子域名(如 site1.yourdomain.com)而非子目录(如 yourdomain.com/site1),需要提前在 DNS 设置中添加泛域名解析(*.yourdomain.com 指向服务器 IP)。
5. **PHP 内存限制**:多站点模式对内存消耗更高。登录服务器,编辑 `wp-config.php`,在 `/* 好了!请不要再继续编辑。请保存本文件。 */` 上方添加一行:`define('WP_MEMORY_LIMIT', '256M');`。如果已有该行,修改数值为 256M 或更高。
---
### 分步操作步骤
#### 步骤 1:启用 WordPress 多站点网络功能
1. 使用 FTP 客户端或服务器文件管理器,找到并打开 WordPress 安装根目录下的 `wp-config.php` 文件。
2. 在文件中找到 `/* 好了!请不要再继续编辑。请保存本文件。 */` 这一行。**注意:** 必须在这一行之前添加代码。
3. 在该行上方另起一行,粘贴以下代码:
```php
define('WP_ALLOW_MULTISITE', true);
```
4. 保存并关闭 `wp-config.php` 文件。
5. 刷新 WordPress 后台仪表盘页面。此时,左侧菜单中会出现一个“**工具**”菜单,点击它,你会看到新增的“**网络设置**”选项(注意:不是“站点健康”或“导入/导出”)。
#### 步骤 2:配置网络设置
1. 点击“**工具**” > “**网络设置**”。
2. 在“**网络类型**”选项中,选择你想要的子站点地址结构:
- **子域名**:适用于需要独立域名的场景(如 site1.yourdomain.com)。需要 DNS 泛域名支持。
- **子目录**:适用于站点结构为 yourdomain.com/site1 的场景。**注意:** 如果现有 WordPress 安装在子目录中(如 yourdomain.com/blog),则无法使用子目录模式。
3. **网络标题**:输入一个描述性的名称,例如“我的网站网络”。这不会影响子站点的标题。
4. **网络管理员邮箱**:默认使用当前账号邮箱,建议保留。该邮箱将接收网络级通知(如新站点注册)。
5. 点击“**安装**”按钮。系统会生成两个代码块:一个用于 `wp-config.php`,另一个用于 `.htaccess`(Apache)或 Nginx 配置。
#### 步骤 3:添加网络配置代码到 wp-config.php
1. 再次打开 `wp-config.php` 文件。
2. 找到之前添加的 `define('WP_ALLOW_MULTISITE', true);` 这一行。
3. 在该行下方(或文件末尾的 `/* 好了!请不要再继续编辑。 */` 之前),粘贴系统生成的第一个代码块。它通常包含以下内容(示例值,实际代码以系统生成为准):
```php
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true); // 如果选择子域名则为 true,子目录则为 false
define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
```
4. **关键检查点**:确保 `DOMAIN_CURRENT_SITE` 的值为你当前访问 WordPress 的域名(不带 `http://`),且 `PATH_CURRENT_SITE` 为 `/`(如果安装在根目录)。如果安装在子目录(如 `yourdomain.com/blog`),则 `PATH_CURRENT_SITE` 应为 `/blog/`。
5. 保存并关闭 `wp-config.php` 文件。
#### 步骤 4:配置服务器重写规则
**如果你使用 Apache 服务器(常见于 cPanel 主机):**
1. 找到 WordPress 根目录下的 `.htaccess` 文件。如果不存在,创建一个空文本文件并命名为 `.htaccess`。
2. 用文本编辑器打开 `.htaccess`,**完全替换**其中的所有内容,粘贴系统生成的第二个代码块。它应该类似这样(注意:必须完全覆盖,不能追加):
```apache
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /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]
```
3. 保存 `.htaccess` 文件。
**如果你使用 Nginx 服务器:**
1. 登录服务器 SSH,找到 Nginx 的站点配置文件(通常位于 `/etc/nginx/sites-available/yourdomain.com` 或 `/etc/nginx/conf.d/`)。
2. 在 `server` 块内部,找到 `location /` 块(或 `try_files` 指令所在位置)。
3. 将 `try_files` 指令替换为以下内容(注意:这是标准配置,但必须与你的现有配置兼容):
```nginx
location / {
try_files $uri $uri/ /index.php?$args;
}
# 多站点特定规则(必须添加)
if (!-e $request_filename) {
rewrite ^/(wp-(content|admin|includes).*) /$1 last;
rewrite ^/(.*\.php)$ /$1 last;
rewrite ^ /index.php last;
}
```
4. 保存配置文件,然后执行 `sudo nginx -t` 测试语法是否正确。如果显示 `syntax is ok`,执行 `sudo systemctl reload nginx` 使配置生效。
#### 步骤 5:登录并验证网络
1. 完成上述所有修改后,**重新登录** WordPress 后台。你会看到顶部出现一个“**我的站点**”菜单,点击它,选择“**管理网络**”。
2. 进入网络管理后台(通常是 `yourdomain.com/wp-admin/network/`)。
3. 点击“**站点**” > “**新增站点**”,创建一个测试子站点。输入站点地址(如果是子域名模式,输入 `testsite`;子目录模式则输入 `testsite`),站点标题和管理员邮箱。
4. 点击“**添加站点**”。创建成功后,访问 `testsite.yourdomain.com` 或 `yourdomain.com/testsite`,应该能看到一个全新的空白 WordPress 站点。
5. 返回网络管理后台,点击“**主题**”,启用一个默认主题(如 Twenty Twenty-Four)。然后点击“**插件**”,启用一些常用插件(如 Akismet)。注意:只有网络启用的插件,所有子站点才能使用;子站点管理员可以在自己的站点中启用或禁用网络已启用的插件。
---
### 常见问题
**问题 1:启用多站点后,后台页面显示空白或 500 错误。**
- **原因**:通常是由于 `wp-config.php` 或 `.htaccess` 代码添加位置错误,或内存不足。
- **解决**:检查 `wp-config.php` 中 `define('WP_ALLOW_MULTISITE', true);` 是否在 `/* 好了!请不要再继续编辑。 */` 之前。检查 `.htaccess` 是否被完全替换,且文件权限为 644。在 `wp-config.php` 中添加 `define('WP_MEMORY_LIMIT', '256M');`。如果仍然报错,通过 FTP 删除 `wp-config.php` 中多站点相关代码和 `.htaccess` 中的重写规则,恢复备份。
**问题 2:创建子站点后,访问出现 404 错误。**
- **原因**:重写规则未生效。Apache 需要启用 `mod_rewrite` 模块;Nginx 配置中 `try_files` 指令错误或缺少多站点规则。
- **解决**:对于 Apache,检查 `.htaccess` 文件是否存在且内容正确。登录 cPanel 或服务器,确认 `mod_rewrite` 已启用。对于 Nginx,仔细核对步骤 4 中的 Nginx 配置,确保 `rewrite` 规则正确放置。执行 `sudo nginx -t` 检查语法。
**问题 3:子站点无法登录后台,提示“您没有足够的权限”。**
- **原因**:用户角色权限不足。网络管理员账号默认具有所有权限,但子站点管理员只能管理自己的站点。
- **解决**:使用网络管理员账号登录,进入“我的站点”>“管理网络”>“站点”,点击有问题的子站点,在“用户”标签页中,将该用户角色提升为“管理员”。如果问题仍存在,检查该用户是否被从网络中删除。
**问题 4:插件或主题不兼容多站点。**
- **原因**:部分插件(如某些缓存插件、自定义字段插件)未针对多站点优化。
- **解决**:在安装插件前,查看其描述中是否明确支持“Multisite”。启用插件后,如果子站点出现错误,立即停用该插件。可以尝试使用“网络禁用”功能强制所有子站点停用该插件。
---
### 收尾总结
至此,你已经成功将 WordPress 单站点转换为多站点网络。核心操作集中在修改 `wp-config.php` 和服务器配置文件。记住几个关键原则:始终在修改前备份;严格遵循系统生成的代码;子域名模式需要 DNS 泛解析;子目录模式不能用于已安装在子目录中的站点。多站点模式非常适合管理博客网络、学校或企业内部分站、多语言站点等场景。日常维护时,只需登录网络管理后台,即可集中更新核心、主题和插件,大幅提升效率。如果后续需要添加新站点,直接在“站点”>“新增站点”中操作即可,无需重复安装程序。