不少人把 sitemap 当成收录开关:文件生成好、提交上去,就等着收录量往上涨。实际上 sitemap 只解决一件事——让搜索引擎知道站点上存在哪些 URL。至于会不会来抓、抓了之后会不会进索引,中间还隔着两道关。所以核对的顺序应该是三段:文件有没有被读到、清单里的 URL 有没有被实际抓取、抓到的内容有没有进入索引。跳过前两段直接盯收录量,很容易得出错误结论。
一、先理清 sitemap 的职责边界
把 sitemap 想成一个目录递交动作会更准确。它能做的事和不能做的事,最好分开看:
- 能做的:把一批 URL 集中告知爬虫,尤其是内链层级较深、不容易被自然发现的页面;
- 能做的:携带 lastmod 等信号,帮助判断哪些页面最近改动过;
- 做不到的:保证抓取频次,也不能决定页面是否进入索引;
- 做不到的:弥补页面本身的质量问题,比如内容过薄、与已有页面高度重复。
换句话说,sitemap 影响的是“发现”环节。发现之后的判断,仍然由爬虫和索引系统独立完成。
二、确认 sitemap 本身有没有被读到
收录没动静时,第一步不是改 sitemap 内容,而是确认这份文件有没有被正常访问。可以在服务器日志里按 sitemap 路径检索,看请求是否来自真实爬虫、返回状态是否为 200。常见的几类低级问题值得先排掉:
- 访问异常。文件被规则拦截、返回 403 或跳转到登录页,爬虫看到的是一个空结果。
- 体积与条数超限。单个文件通常有条数和未压缩体积上限,超出部分需要拆成多个子文件并用索引文件串起来。
- 子文件不可抓。用了 sitemap index 但子文件路径写错、被 robots.txt 屏蔽,索引文件被读了,子文件却一个都没进。
- 入口没写全。robots.txt 里没有 Sitemap 行,或提交后台里填的是旧路径,两处都可能造成“以为提交了,其实没提交”。
这一步的判断依据是日志,而不是后台的提交状态提示。后台显示成功,只代表文件被接收,不代表内容被逐一处理。
三、把清单里的 URL 分成三档
sitemap 里的 URL 不该是“全站导出”,而应该是一次有取舍的挑选。按意图分三档,核对起来会清晰很多。
第一档:明确希望被收录的页面
详情页、核心栏目页、有独立检索价值的专题页属于这一档。它们应该满足几个前提:URL 稳定、返回 200、正文主体完整、可以被未登录状态访问。任何一条不满足,就先修页面,而不是反复重新提交。
第二档:可收录可不收录的页面
分页、标签聚合、筛选结果、归档页大多落在这里。放不放进去取决于站点策略,但至少要保证同一批页面只以一种形态出现。如果分页既在 sitemap 里、又能通过参数组合出无穷变体,爬虫会把预算花在重复路径上。
第三档:不该出现在 sitemap 里的页面
这类页面放进 sitemap 会直接拉低整份清单的可信度:
- 已经设置 noindex 的页面,指令之间互相矛盾;
- 跳转到其他地址的 URL,最终落地页才是需要被发现的;
- 返回 404 或 410 的历史地址;
- 需要登录、加购或提交表单后才能看到正文的页面。
核对时可以做一个简单动作:把 sitemap 里的 URL 与实际可访问、可索引的 URL 做一次差集。差集越小,这份清单的“有效提交率”越高。
四、lastmod 不要随手写
lastmod 是 sitemap 里少数能被直接利用的信号之一,但它只在准确时才有价值。几种常见写法会影响判断:
- 每次生成 sitemap 就把全站 lastmod 刷成当天,爬虫很快会学会忽略这个字段;
- 所有页面写同一个固定日期,等于没有提供信息;
- 时区格式不统一,解析结果和实际改动时间差出一截。
更稳妥的做法是让 lastmod 跟随正文的实际改动时间,只有内容发生变化时才更新。模板调整、样式微调、广告位替换这类不影响正文主体的改动,不必触发 lastmod 变更——这一点和“索引里还是旧版本”的核对逻辑是相通的。
五、提交之后的核对节奏
三段核对对应三个不同的观察窗口,最好不要混在一起看:
- 前一周看抓取。日志里出现对新增 URL 的请求,说明发现的环节通了。此时收录没变化是正常的。
- 第二到四周看索引。被反复抓取但仍不进索引的页面,问题通常在内容质量、重复度或站点整体信任度上,而不是 sitemap 格式。
- 长期看一致性。定期比对 sitemap 与线上真实 URL,删掉失效条目、补上新增核心页面,避免清单越滚越大却越来越不准。
一个实用的判断:如果日志里连抓取请求都没有,问题在发现环节;如果抓了多次仍不进索引,问题在页面与站点层面。两者用的排查方法完全不同,混着改只会互相干扰。
把 sitemap 放回它本来的位置——它是一份递给爬虫的候选清单,负责降低发现成本,不负责收录结果。按发现、抓取、入库三段分开核对,才能看清问题真正卡在哪一步。