问题出现得很突然,日志倒是留得挺全。站点有 640 份按日期切分的 sitemap,索引文件里也列了 640 条。提交到 GSC 后一直提示格式错误,日志里能看到蜘蛛只抓了前 500 条就停了。

刚开始盯着「超出部分没有二级索引兜底,直接被截断」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。单个 sitemap 索引最多列 500 个子文件。少数情况下是按天切分的策略让文件数随日期线性增长,没人预估上限。

还有一种情况,子文件里还有空文件,占了名额却没有内容。

数一下索引里的 loc 条数

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

然后按月份做二级索引收敛文件数

python gen_index.py --group month --max 500

再往下删掉空的子文件

find sitemap/ -size 0 -delete

提交新索引并核对已发现数

curl -s https://www.example.com/sitemap_index.xml -o /dev/null -w '%{http_code}\n'

改完先别撤,确认这几项。索引条目从 640 降到 48,GSC 显示 48 个子文件全部被发现,最近三个月的文章抓取率提升到 90% 以上。

容易忽略的是,按天切分 sitemap 看着整齐,文件数涨得很快,超过三百份就该改成按月聚合。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189