搜索抓取

Sitemap 索引与分片:站点变大后 URL 清单怎么组织

当站点 URL 数量超过单个 Sitemap 的承载上限,索引文件与分片就派上用场。本文说明 Sitemap 索引的写法、分片思路、文件命名与更新节奏,并提醒它只是 URL 清单,不能替代内链和抓取路径建设。

搜索抓取

Sitemap 索引与分片:站点变大后 URL 清单怎么组织

当站点只有几百个页面时,一个 sitemap.xml 足够用。但 URL 数量增长到几万甚至几十万,单个 Sitemap 会碰到条数和体积上限,文件本身也会变得难维护。这时需要 Sitemap 索引文件,把多个 Sitemap 分片组织成一个清单入口。

先确认单个 Sitemap 的边界

常见规范里,单个 Sitemap 文件最多包含 50,000 条 URL,未压缩体积不超过 50MB。超过后,蜘蛛可能只读取到一部分,或者直接忽略文件。这里说的体积通常按解压前计算,所以把 sitemap.xml 做成 gzip 并不能绕开条数限制。

如果你的站点已经接近这些数字,不要继续往一个文件里塞。拆分成多个文件,再用索引文件统一指向,是更稳妥的做法。

Sitemap 索引文件长什么样

Sitemap 索引文件本身不包含页面 URL,只列出各个 Sitemap 分片的地址。它像一个目录页,蜘蛛打开索引后,再按需读取下面的分片。

  • 一个索引文件最多可以包含 50,000 个 Sitemap 文件地址,同样有 50MB 未压缩体积限制。
  • 索引里通常只放 Sitemap 文件,不再嵌套另一个索引文件,层级太深会增加蜘蛛的理解成本。
  • 索引文件可以放在站点根目录,也可以和分片放在同一目录,但地址要稳定。

在 robots.txt 或搜索资源平台提交时,提交索引文件地址即可,不需要把每个分片都单独提交一遍。

分片可以怎么拆

按目录或内容类型拆

这是最容易维护的一种方式。比如文章、商品、专题页、帮助文档各做一个分片。蜘蛛读取某个分片时,拿到的是一类 URL,更新和排查都更清楚。

按更新时间拆

如果站点每天新增大量内容,可以按月或按周生成分片,旧分片保持不动,新分片持续追加。这样索引文件里始终只有有限几个地址,更新时只替换对应分片。

按语言或站点版本拆

多语言站点可以按语言目录拆分,不同国家或地区的站点也可以各自维护分片。避免把全部 URL 混在一个文件里,导致某一类页面出问题时影响整个清单。

分片命名与更新节奏

分片文件名建议保持稳定,例如 sitemap-articles-1.xml,而不是每次更新都换成带时间戳的新名字。频繁改名会让蜘蛛不断发现新地址,旧地址又变成无效入口,增加无意义的抓取。

  • 分片内容更新时,直接替换文件内容即可,文件名和路径不变。
  • 如果必须新增分片,可以在索引文件里追加,旧分片继续保留一段时间。
  • 删除分片前,先确认里面的 URL 已经通过 404、301 或其他方式处理,不要突然让大量地址从清单里消失。

Sitemap 只是清单,不是抓取路径

Sitemap 能帮助蜘蛛发现 URL,但它不保证蜘蛛一定抓取,也不决定页面的权重。真正影响蜘蛛走到哪里、停留多久的,仍然是站内链接结构。重要页面应该从首页、栏目页、相关推荐等位置有正常的内链指向,而不是只躺在 Sitemap 里。

另外,分片只是清单,不是抓取路径。蜘蛛仍会结合内链、页面更新频率和服务器响应来安排抓取。Sitemap 分片再整齐,如果页面本身返回错误、加载很慢,抓取效果也不会好。

用日志检查分片是否被读到

提交索引文件后,可以在服务器日志里观察蜘蛛对索引和分片的请求。重点看几个信号:

  1. 索引文件是否被请求,返回状态是否正常。
  2. 分片是否被逐个读取,还是只读了前面一两个。
  3. 分片里的 URL 是否在后续几天里出现被抓取记录。

如果索引被读、分片却很少被访问,先检查分片地址是否可访问、是否被 robots.txt 误屏蔽,再检查分片体积和条数是否超出限制。不要反复提交同一个文件来催促,先排除文件本身的问题。

把 Sitemap 索引与分片当作 URL 清单来维护:文件要稳定、分片要清楚、地址要可访问。它不能代替内链,也不能承诺收录,但能让蜘蛛更省力地发现你的页面。