开了子目录多站点,主站一切正常,切到子站点开文章全是 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,能进后台说明重写规则只影响前台,改规则即可;后台也进不去,则要检查站点地址配置有没有写错子目录名。