记录一下那天晚上的排查过程。WordPress 多站点开了子目录模式,三个子站的 sitemap 里 loc 全是主站域名,子站页面一条都没进索引。

这类报错背后常见的原因有几处,逐个排除就行。生成时取了主站地址而不是子站的站点地址。也可能是子站没有绑定独立域名,规范地址被主站覆盖。

少数情况下是子站的 canonical 也跟着主站走。

先逐个打开子站 sitemap 看域名

curl -s https://www.example.com/sub/sitemap.xml | head -3

生成时取当前站点地址

echo site_url();

校正子站 canonical

curl -s https://www.example.com/sub/ | grep -o '<link rel="canonical"[^>]*>'

末了把子站 sitemap 分别提交

curl -s https://www.example.com/sub/sitemap.xml | grep -c '<loc>'

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

怎么算真的好了,看的是同一批现象。三个子站的 sitemap 各自输出本域地址,分别提交后出现已发现地址,子站页面开始进索引。

提醒一点。子目录模式共用一个域名,判断依据是路径前缀,别把路径也一起替换掉。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189