搜索全站
常规配置 7 分钟阅读

WordPress 多站点子站无法访问怎么解决

开启多站点后新建的子站打不开、全部 404 或提示无法访问?本文讲清子目录与子域名两种模式的伪静态规则、wp-config.php 常量、DNS 泛解析与泛域名证书配置,帮你一步步排查,让每一个子站都能顺利上线并正常访问,再也不用反复折腾,照着做就行。

U
UFO_PF 2026-10-10 · 阅读 7 分钟
Wo 常规配置
阅读提示
本文约 2,717 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

为了在一个后台管理多个独立站点,很多站长会启用 WordPress 的多站点(Multisite)功能。可是开启网络之后经常出现这样的问题:主站一切正常,新建的子站却怎么都打不开,要么跳转到 404,要么提示「此站点无法访问」,甚至连网络后台里的站点列表都点不进去。不少人试了几次不行就放弃,改回单站点,白折腾一场。多站点的原理比较特殊,它的路由完全依赖服务器的重写规则和 wp-config.php 里的一组常量,只要其中一环缺失,子站就会集体失联。另外子目录模式和子域名模式的要求也不一样,混着用必然出错。下面分别讲清楚两种模式的排查和解决思路。

故障原因分析

  1. wp-config.php 缺少多站点常量。开启网络时 WordPress 会让你把 MULTISITE 等一组常量粘进配置文件,漏了子站就没有路由依据。开启网络的入口和运行时的常量是两回事,前者只是让菜单出现,后者才真正决定子站怎么访问。
  2. 伪静态规则没更新。普通站点的规则和多站点规则不一样,尤其子目录模式需要额外规则,否则子站 404。
  3. 子域名模式没做泛解析。子站用的是 子站名.example.com,没有 *.example.com 的 DNS 记录就根本解析不到,浏览器直接报找不到服务器。
  4. 数据库中的 wp_blogs、wp_site 记录异常。迁移或恢复不当会导致站点表对不上,子站找不到自己的配置。
  5. 主机的通配符证书或服务器别名未配置。子域名模式还需要证书覆盖 *.example.com,否则会被浏览器拦截。
  6. 网络后台里没有真正创建好子站,路径与实际不匹配。

分步解决方案

方法一:确认 wp-config.php 中的多站点常量。 开启网络后,WordPress 会提示在 wp-config.php 中加入以下内容(以子目录模式为例):

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

WP_ALLOW_MULTISITE 只是打开入口,真正的运行常量是后面这几个。若用子域名模式,把 SUBDOMAIN_INSTALL 改成 true;若装在子目录,把 PATH_CURRENT_SITE 改成对应路径。请逐字核对域名和路径,多一个斜杠都可能出问题。

方法二:更新伪静态规则(子目录模式)。 普通 WordPress 的 .htaccess 不足以支撑多站点,需替换成:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# 给 /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]

Nginx 环境下在 server 段加入:

if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    rewrite ^(/[^/]+)?(/wp-.*) $2 last;
    rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}

改完用 nginx -t 验证语法再重载。

方法三:为子域名模式配置泛解析。 到域名 DNS 管理处添加两条记录:一条 *.example.com 指向服务器 IP 的 A 记录,以及可选的一条 @(根域名)A 记录。若有 IPv6 需求还要加 AAAA 记录。泛解析生效后,任意子站名.example.com 才能解析到你的服务器,这一步不做,再对的伪静态也没用。

方法四:核对数据库站点表。 用 phpMyAdmin 打开 wp_blogs 和 wp_site 表,检查每个子站的 domain、path 是否正确,主站的 blog_id 是否为 1。迁移站点后这类记录很容易停留在旧域名,必须一并修正。

方法五:处理证书与服务器别名。 子域名模式建议给证书加一个泛域名(*.example.com)。宝塔等面板可申请含泛域名的 DV 证书,否则子站会因证书不匹配被浏览器拦截,看起来像「无法访问」。

验证:逐步定位卡在哪一环。 先用浏览器访问主站,再访问子站的 /wp-admin/。若主站正常而子站 404,多半是伪静态规则或常量写错;若提示「无法解析域名」,则是泛解析还没生效;若被提示证书不安全或连接被拒,检查泛域名证书是否覆盖子站。按这个顺序逐条排除,就能快速锁定问题所在。

常见踩坑点

  1. 只加了 WP_ALLOW_MULTISITE,忘了加后面那几个运行常量。
  2. 子目录模式沿用普通站点的 .htaccess,子站全部 404。
  3. 子域名模式忘记做泛解析,子站直接解析失败。
  4. PATH_CURRENT_SITE 或 DOMAIN_CURRENT_SITE 写错,主站也跟着出问题。
  5. 迁移站点后没更新 wp_blogs 表里的旧域名。
  6. 泛域名证书没配,浏览器误报为站点不可用。
  7. 把子目录和子域名两种模式混着理解,规则对不上,越改越乱。

总结

WordPress 多站点子站无法访问,八成问题出在「常量、伪静态、DNS 泛解析」这三点上。子目录模式重点检查 wp-config.php 常量和增强版重写规则,子域名模式则要额外做好 *.example.com 的解析与泛域名证书。按「配置常量 → 更新伪静态 → 核对 DNS 与站点表 → 验证证书」的顺序排查,WordPress 多站点子站无法访问的问题就能逐一定位并解决,新建子站也能顺利访问。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。