WordPress 高级管理手册

title: "调试 WordPress 多站点网络" post_status: publish comment_status: open taxonomy: category: - advanced-administration-handbook post_tag: - Debug - Repos - Data


调试 WordPress 多站点网络

如果您访问到此页面,很可能是在设置或运行 WordPress 多站点网络时遇到了错误。这些错误通常发生在 WordPress 无法在数据库中找到网络所需的一个或多个全局表,或者 Web 服务器配置不正确时。

本指南概述了 WordPress 多站点网络在设置或运行过程中最常见的问题原因及解决方法。


开始之前 {#before-you-begin}


如果您刚刚安装了网络 {#new-install}

验证 wp-config.php 文件 {#verify-wp-config}

检查您的 wp-config.php 文件,确认以下内容:

确保在以下代码块之后没有放置任何代码:

/* That's all, stop editing! Happy publishing. */

/** WordPress目录的绝对路径。 */
if ( ! defined('ABSPATH') ) {
    define('ABSPATH', __DIR__ . '/');
}

/** 设置WordPress变量和包含文件。 */
require_once ABSPATH . 'wp-settings.php';

如果您在 require_once之后发现了自定义代码,请将其移动到“stop editing”注释之前。


Mod_rewrite 或重写规则不工作 {#rewrites}

如果主站点能加载但子站点返回 404 错误,可能是您的重写规则未生效。

Apache

在 Ubuntu/Debian 系统上:

sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/000-default.conf

将两处 AllowOverride None 都改为 AllowOverride All,然后重启 Apache:

sudo systemctl restart apache2

Nginx

对于 Nginx,请确保您的服务器块包含以下配置:

location / {
    try_files $uri $uri/ /index.php?$args;
}

重启 Nginx:

sudo systemctl restart nginx

检查数据库 {#check-database}

多站点网络需要额外的数据库表。请确认以下表存在(使用您的前缀,例如 wp_):

如果表缺失,或者 wp_site/wp_blogs 表为空,您可能需要手动插入数据行。请先备份!

示例 SQL(请调整前缀、域名、路径、用户和日期):

INSERT INTO wp_site VALUES (1, 'example.com', '/');
INSERT INTO wp_blogs VALUES (1, 1, 'example.com', '/', '2025-01-01', '2025-01-01', 1, 0, 0, 0, 0, 0);
INSERT INTO wp_sitemeta VALUES (1, 1, 'site_admins', 'a:1:{i:1;s:5:"admin";}');

⚠️ 请将 "admin" 更改为您的实际用户名,并调整 s:5 以匹配其字符长度。


如果新站点创建突然停止工作 {#site-creation-stopped}


其他问题 {#other-issues}

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden

这可能会阻止重写并导致 WordPress 报告缺少数据表。请更新 Apache 配置以允许重写。



遗留说明 {#legacy-notes}

部分问题可追溯至从 WordPress MU(3.0 版之前)迁移而来。这些问题在现代网络中已很罕见,但在运行非常古老的站点时仍可能出现。如有可能,请考虑迁移至全新的多站点安装。