站点地图条数和抓取报表对不上时,先查生成还是提交
站点地图里的条数和抓取报表对不上时,应该先查生成侧还是提交侧?答案是先查生成、再查提交: sitemap 文件本身的问题(分片遗漏、lastmod 失真、非规范地址混入)会让后面所有引擎数据都失真,而提交侧的问题(引擎是否读取、主动推送是否跟上、robots 声明是否一致)通常在生成正确之后才值得排查。顺序反过来,会把一个文件 bug 误诊成「引擎不收你的站」。
两个数各自统计的是什么
先对齐口径:站点地图条数统计的是「你声称有多少个该被抓的 URL」,抓取与收录报表统计的是「引擎实际抓了多少、认为值得收多少」。两者天然不相等——地图里可以有引擎已经处理过、判定重复或低价值的地址;报表里也可能出现地图没列却被发现的页面。健康的排查目标不是把两个数硬掰成一样,而是确认差距的结构:是地图远多于抓取(生成侧混入垃圾地址的嫌疑),还是抓取远多于地图(站点可被抓取但索引覆盖失控,提交声明没跟上)。
先查生成侧:分片、lastmod 与规范地址
三件事按序查。第一,分片与索引文件:站点数量大时 sitemap 会拆成多个子图加一个索引文件,新站最常见的坑是索引清单漏挂子图——手工核对一遍总数与子图清单的加和。安企 CMS 支持 Sitemap 自动生成,生成逻辑按内容模型与发布时间覆盖文档,升级或迁移后重点抽查新栏目是否进了清单。第二,lastmod:如果每条的 lastmod 都等于生成时间,引擎会把整站当成「同时大改」,增量抓取策略失效;正确口径是取内容的真实修改时间。第三,规范地址:地图里应当只放 200 状态的规范 URL,带跳转的旧地址(301 重定向承接的历史路径)、带跟踪参数的地址、http 与 https 双份,都是「条数虚高」的常见来源——跳转映射交给 301 管理处理,地图里只留终点。
再查提交侧:提交、推送与声明
生成侧干净后,看引擎有没有真的读到:站长平台里 sitemap 的提交记录与最近读取时间是否新鲜;robots.txt 中的站点地图声明是否指向当前这份文件——robots 配置和实际提交的地址不一致时,按声明来抓的爬虫会找错文件。收录增量慢不等于 sitemap 失效,新页面进图与引擎抓取之间本来有队列时间;这时候该补的是链接推送:向百度与 Bing 主动推送新页与更新页,把「发现」这一步从被动等抓取变成主动告知,sitemap 管全量兜底,推送管增量时效,两个通道各自核对。
对不上的三种典型场景
场景一,地图条数远大于抓取量:多半是历史垃圾地址进了图,按生成侧第三条清理。场景二,抓取量正常但收录增长停滞:抓的是首页与栏目页轮转,正文页没进抓取队列,检查 lastmod 失真与内容重复度。场景三,报表里出现地图外地址:robots 声明的旧文件还挂在引擎侧,或者历史外链把旧参数地址喂给了爬虫——撤旧提交、给旧地址配 301 收敛到规范页。每种场景都先回到生成侧文件本身找证据,再动提交配置。
常见问题
问:重新生成整份 sitemap 会不会触发全量重抓? 答:引擎按 lastmod 与内容变化判断,如实的修改时间才不会引起误判;把生成时间写进 lastmod 反而容易造成异常集中抓取。
问:主动推送和 sitemap 提交重复吗? 答:不重复:sitemap 是全量清单与兜底发现,推送是增量通知,收录时效主要靠后者,覆盖完整性靠前者。
问:多语言站点的翻译页要不要进同一份地图? 答:按站点归属分别生成与提交,语言版本之间用页面内的语言切换互指,避免两种语言的 URL 混排导致规范判定混乱。