开了子目录多站点,主站一切正常,切到子站点开文章全是 404,后台也进不去。多站点的重写规则和单站不同,直接沿用单站配置必然出错。

先确认子站真的建好了

wp site list --fields=blog_id,url,archived

列表里能看到子站地址,说明数据库层面没问题,故障在 Web 服务器把请求转给谁。

Nginx 的正确写法

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

多站点还需要确保子目录请求不会被当成静态文件目录。如果之前给子站目录单独加过 location,删掉它,统一交给上面的规则处理,否则子站的 /wp-admin 会被拦截。

后台里再保存一次固定链接

网络管理后台进入每个子站的设置,把固定链接原样保存一次,会重建该子站的重写规则。这一步能解决大量迁移或新建后子站 404 的问题。

另外子目录多站点只能用子目录,不能和子域名模式混用;切换模式要改配置常量,改完必须重新保存固定链接,否则所有内页都会失效。

排查时先直接访问子站的 wp-admin 看是否 404,能进后台说明重写规则只影响前台,改规则即可;后台也进不去,则要检查站点地址配置有没有写错子目录名。

作者 9823189