这类问题我又碰上了一次。覆盖率报告里已编入索引一万条,已排除两万条,加起来和 sitemap 提交的总数对不上,差了四千多条。

这类报错背后常见的原因有几处,逐个排除就行。同一 URL 会因不同原因被重复计入不同分组;sitemap 里的地址并非全部被抓取过;部分地址在报告统计周期之后才提交。

第一件事是导出两个分组做差集比对

curl -s https://www.example.com/sitemap.xml | grep -o '<loc>[^<]*' | wc -l

然后抽样检查差异地址的状态

curl -s -o /dev/null -w '%{http_code}' https://www.example.com/x/

末了确认报告统计的时间范围

curl -sI https://www.example.com/sitemap.xml | head -1

中途换过一次思路,把范围缩到最小的那一层,反而快了。

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

改完先别撤,确认这几项。核对后差异地址都能归入明确状态,不再有无法解释的缺口,后续改动也有据可依。

容易忽略的是,报告本身有延迟,数据滞后几天很正常,判断问题前先看统计截止日期,别拿实时数量直接对比。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189