搜索抓取

Sitemap 分片与索引文件:大型站点的 URL 发现怎么组织

当站点 URL 数量超过单个 Sitemap 的承载范围,分片和索引文件就成为 URL 发现的基础设施。本文梳理分片拆分方式、索引文件的声明位置、分片内容检查以及更新与失效处理,帮助大型站点减少发现断点,让搜索蜘蛛更顺畅地找到该找的页面。

搜索抓取

Sitemap 分片与索引文件:大型站点的 URL 发现怎么组织

站点规模变大后,单个 Sitemap 往往装不下所有 URL。分片和索引文件是常见做法,但它不是把文件切碎就完事。分片怎么切、索引文件放在哪、分片内容是否可访问,都会影响搜索蜘蛛能不能顺利发现 URL。

分片拆分:按什么维度切更合理

协议允许每个 Sitemap 最多放 50000 个 URL,未压缩大小不超过 50MB。实际拆分时,不必卡着上限,可以按内容类型、更新频率或栏目层级来分。这样后续排查和更新都更清楚。

  • 按内容类型:文章、商品、专题、帮助文档各自一个分片,便于观察哪类 URL 发现慢。
  • 按更新频率:高频更新的列表页和低频的静态页分开,减少每次全量重写。
  • 按语言或地区:多语言站点分开,避免不同语言 URL 混在一起。

分片数量不是越多越好。几十个分片还算好管理,几百个就要考虑索引文件是否清晰、分片地址是否规则。

索引文件要能被稳定发现

Sitemap 索引文件本身也是一个入口。它需要被提交到搜索资源平台,并在 robots.txt 中声明。索引文件里列出的分片地址必须是可访问的绝对地址,返回 200 状态码,内容类型为 XML。如果分片开了 gzip,索引里的地址和实际返回要一致。

  • 索引文件不要嵌套索引文件,层级尽量只有一层。
  • 分片地址不要带随机参数或会话参数。
  • 分片里的 lastmod 要真实,不要每次生成都改成当前时间。
  • 分片文件不要设置 noindex,也不要用 robots.txt 屏蔽。

分片内容与内链互相验证

分片负责告诉搜索蜘蛛“这里有 URL”,但不保证它一定会抓取。要判断发现是否正常,可以把分片里的 URL 和站内链接、服务器日志交叉看。如果某个分片里的 URL 长期没有抓取记录,可能是分片本身有问题,也可能是这些 URL 缺少内链入口。

分片解决的是发现入口问题,抓取和索引还取决于页面质量、服务器响应和内链结构。不要把分片当成收录保证。

更新、下线与分片维护

分片不是生成一次就不用管。内容更新、页面下线、改版换地址,都要同步到分片。处理时可以按下面顺序核对:

  1. 确认新 URL 已经能正常访问,返回 200,并且页面内容不是空壳。
  2. 把新 URL 加入对应分片,更新 lastmod,重新提交索引文件。
  3. 下线的 URL 从分片中移除,同时保留旧地址返回 410 或 404 一段时间,不要让旧地址直接跳向无关页面。
  4. 改版换地址时,用 301 把旧地址指向新地址,并更新分片中的地址。
  5. 观察日志里分片地址和页面地址的抓取频率,确认没有出现只抓分片不抓页面的情况。

常见配置错误

  • 分片地址返回 HTML 错误页,搜索蜘蛛拿到的是错误内容。
  • 索引文件里写的是相对地址,解析后指向不存在的路径。
  • 分片大小写不一致,同一批 URL 出现两种写法。
  • 把不同协议、不同域名下的 URL 混在同一个索引里。
  • 分片里包含大量重定向地址或参数地址,增加无效抓取。

大型站点的 URL 发现,往往不是缺一个入口,而是入口太多、太乱或者中途断掉。定期抽查索引文件、分片文件和日志中的抓取痕迹,比一次性生成全部文件更有用。