Sitemap 的作用是给蜘蛛提供一批可抓取的入口候选,但它并不能决定哪些页面会被收录。实际抓取时,蜘蛛仍会按自己的判断去验证:这个地址返回什么状态码、是否可索引、和站内其他入口是否指向同一个规范地址。所以 Sitemap 的价值不在于“列得多”,而在于“列得准”。
Sitemap 是入口清单,不是收录开关
把 Sitemap 理解成一份“备选入口列表”更准确。蜘蛛读取后会把其中的 URL 放入待抓取队列,之后是否继续抓、抓多深,取决于页面本身的响应质量、内链支持度和站点整体的抓取节奏。批量塞入低质地址,反而会稀释抓取资源,让真正需要更新的页面排队更久。
适合放进 Sitemap 的地址
- 可索引的规范地址:返回 200,canonical 指向自身,没有被 robots 或 meta 标记为 noindex。
- 有实际内容的列表页与详情页:空列表、纯筛选结果、内容极少的过渡页,价值有限。
- 内链中已有入口的页面:Sitemap 与内链互相印证,能提高被发现后的抓取确定性。
- 更新较有规律的栏目:配合真实的 lastmod,便于蜘蛛判断哪些分区值得回访。
不建议放进 Sitemap 的地址
- 跳转地址:301、302 的目标应直接写终点 URL,把跳转链留在 Sitemap 里只会增加一次额外请求。
- noindex 页面:既然明确不希望被索引,就不必再主动提交入口。
- 非规范地址:带追踪参数、大小写混用、多版本尾斜杠的变体,容易造成同一内容被多次抓取。
- 404 与失效页:历史地址长期返回错误码时,应从 Sitemap 中移除,而不是留着等待“恢复”。
lastmod 要真实,才能当作回访信号
如果每次生成 Sitemap 都把 lastmod 刷成当前时间,这个字段就失去了参考意义。更稳妥的做法是让它对应内容的实质性变更:正文调整、价格变动、库存更新等。格式统一、时区一致,避免同一页面出现忽前忽后的时间。更新频率不高的栏目,不必强行提高声明频率。
与内链、canonical 做一致性核对
Sitemap 里写的地址、内链指向的地址、页面自身 canonical 声明的地址,三者最好指向同一个 URL。出现分歧时,蜘蛛可能按自己的规则做归一化,结果与你期望的入口不一致。常见分歧点包括:是否带 www、是否用 https、路径末尾斜杠、参数顺序、大小写。
一个可执行的核对顺序
- 从 Sitemap 中抽样一批 URL,逐个请求,记录状态码与最终落地地址。
- 对跳转和 404 的地址做分类:是历史遗留,还是配置错误。
- 检查页面 canonical 是否与 Sitemap 中的写法一致。
- 对照蜘蛛日志,看这些入口被抓取后,是否继续爬到了内链中的下一层。
- 把确认无价值的地址从 Sitemap 移除,并在内链中减少同类入口。
判断标准可以很简单:一个 URL 如果既不能被索引,又不是用户真正会访问的地址,就不需要在 Sitemap 里占位置。
分片与更新节奏的小提示
URL 数量较多时,按栏目或内容类型分片,比把所有地址堆在一个文件里更好维护。分片文件的 lastmod 可以反映该分区的整体更新情况,但不必每次全量重写。新增内容及时加入,下线内容及时剔除,保持清单与站点真实结构大体同步即可。
最后提醒一点:Sitemap 是 URL 发现通道之一,不是唯一。内链结构、栏目页、列表翻页同样承担着发现职责。把 Sitemap 整理干净,同时让内链可爬、服务器响应稳定,抓取效率才会稳定在一个合理水平。