站点运营

站点运营:XML 站点地图自查,别让蜘蛛按着过期清单抓取

XML 站点地图是站点主动交给蜘蛛的地址清单,长期不更新会让抓取跑偏。本文从可访问性、状态码过滤、规范版本、lastmod 真实性、分片与格式几个角度,给出一套可按月执行的站点地图自查流程,帮助站点把抓取集中在真正有效的页面上。

站点运营

站点运营:XML 站点地图自查,别让蜘蛛按着过期清单抓取

XML 站点地图(sitemap.xml)是站点主动交给蜘蛛的一份地址清单。它不保证收录,也不能替代内链和被引用的作用,但它决定了蜘蛛在自行探索之外,还能不能顺着你希望的路径走一遍。清单长期不更新,最直接的结果就是蜘蛛反复访问已经失效的地址,而新页面迟迟没人管。

一、先确认蜘蛛真的拿得到这份清单

很多站点地图问题不是内容写错,而是蜘蛛根本访问不到。先做三件事:

  • 用浏览器无痕模式直接打开你的域名下的 sitemap.xml,确认返回 200,而不是被登录校验、地域限制或 CDN 规则拦下。
  • 检查 robots.txt 里是否有 Sitemap: 这一行,并且写的是完整绝对地址。有多个站点地图时逐行列清楚。
  • 确认服务器没有对蜘蛛的 UA 返回不同结果。部分防护规则会拦批量抓取,顺带把站点地图也拦了。

二、清单里只应该出现可索引的地址

状态码要过一遍

把站点地图里的 URL 批量取一次状态码,凡是有 3xx、4xx、5xx 的,先弄清楚原因再决定留不留。已经 301 的旧地址应该换成目标地址;已经下线的页面直接删掉,而不是留在清单里碰运气。

排除不该被抓的页面

  • 登录页、后台、搜索结果页、站内搜索参数页。
  • 草稿、预览、带临时 token 的地址。
  • 被 robots.txt 明确 Disallow 的目录。Disallow 和 sitemap 同时指向同一批地址,等于发了两条矛盾的指令。
  • 设置 noindex 的页面。既然不想被收录,就别让它出现在清单里占用抓取。

只放规范版本

同一篇内容如果有 www 与非 www、带斜杠与不带斜杠、带参数与不带参数等多个版本,站点地图里只保留 canonical 指向的那一个。版本混放会让蜘蛛在两个地址之间反复确认,效率很低。

三、lastmod 要写实情

lastmod 是站点地图里最容易被滥用的字段。有人每次生成时统一刷成当天时间,短期看似活跃,长期会让蜘蛛学会忽略这个信号,因为它发现时间和内容实际变化对不上。

比较稳妥的做法是:把 lastmod 绑定到内容真正更新的时间戳,而不是生成任务执行的时间;模板、导航、页脚的微调不必触发全站 lastmod 变化;如果确实无法提供准确时间,宁可不写这个字段,也不要写假的。

四、分片、数量与格式

  • 单个站点地图文件建议不超过 5 万个 URL,未压缩体积不超过 50MB,超出就拆成多个文件,再用站点地图索引(sitemap index)串起来。
  • 索引文件里列出的子文件同样要能返回 200,别出现指向已删除分片的情况。
  • URL 中的特殊字符要按规范转义,中文路径建议直接使用编码后的形式。
  • 定期确认站点地图的响应头与缓存策略,别让蜘蛛长期拿到一份缓存住的旧版本。

五、可以按月执行的检查流程

  1. 抓取站点地图文件本身,确认状态码、体积和分片数量。
  2. 提取全部 URL,批量请求响应头,记录非 200 的条目。
  3. 对照 robots.txt 和 noindex 清单,剔除冲突项。
  4. 抽查若干页面的 lastmod,与页面实际更新时间比对。
  5. 把内链、外链中发现的、站点地图里缺失的有效页面补进去。
  6. 把结果记录下来,下次对比变化,而不是每次都从头猜。
站点地图的价值不在于提交得多,而在于清单和站点现状对得上。一份准确实时的清单,比十份凑数的清单更有用。

小结

把站点地图当成一份需要维护的运营资产:地址有效、版本唯一、时间真实、分片清晰。它不会让页面自动排到前面,但能减少蜘蛛在无效地址上的消耗,让新内容更快被看见。