问题出现得很突然,日志倒是留得挺全。按栏目拆了五个 sitemap 分片,索引文件也写了,GSC 里只显示第一个分片的 URL 数量,其余四个像是不存在。
排查方向其实有限,先把可能性排一排。索引文件里只写了一个 loc,其余分片没加进去。还有一种是分片地址返回 404 或 500,读取时被静默跳过。
不容易想到的是,索引文件里的命名空间和 sitemapindex 标签不匹配。
先列出索引文件里所有分片地址
curl -s https://www.example.com/sitemap_index.xml | grep -o '<loc>[^<]*'
随后逐个请求确认可用
curl -sI https://www.example.com/sitemap-posts.xml
修正根标签和命名空间声明
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
同一份数据我导出了两份,一份留底,一份拿来试。
别只看报错消失,验证要多做一步。GSC 里能看到全部分片及其 URL 数量,总和与文章总数一致,各栏目的收录进度都能单独观察。
索引文件本身不能再被别的索引文件引用,层级只能有一层,套两层会被直接忽略且不报错。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。