当站点只有几百个页面时,一个 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 分片再整齐,如果页面本身返回错误、加载很慢,抓取效果也不会好。
用日志检查分片是否被读到
提交索引文件后,可以在服务器日志里观察蜘蛛对索引和分片的请求。重点看几个信号:
- 索引文件是否被请求,返回状态是否正常。
- 分片是否被逐个读取,还是只读了前面一两个。
- 分片里的 URL 是否在后续几天里出现被抓取记录。
如果索引被读、分片却很少被访问,先检查分片地址是否可访问、是否被 robots.txt 误屏蔽,再检查分片体积和条数是否超出限制。不要反复提交同一个文件来催促,先排除文件本身的问题。
把 Sitemap 索引与分片当作 URL 清单来维护:文件要稳定、分片要清楚、地址要可访问。它不能代替内链,也不能承诺收录,但能让蜘蛛更省力地发现你的页面。