sitemap 放不下了怎么拆

工具相关 ·

站点规模增长到一定程度后,生成 sitemap 的脚本会突然报错或者生成一个浏览器打不开的超大文件。原因是 sitemap 有硬性的规模限制:单个文件最多 5 万条 URL,未压缩体积不超过 50 MB。超过之后必须拆分,并写一个索引文件把多个 sitemap 串起来。

两条硬性限制

sitemap 规范(sitemaps.org)规定了两条上限。

限制数值
单个文件的 URL 条数50000 条
单个文件的最大体积50 MB(未压缩)

这两条是「或」的关系——任何一条超出就需要拆分。实际使用中,5 万条的限制通常先被触及,因为一个典型的 URL 加上 lastmod 等字段大约 100 到 200 字节,5 万条大约是 5 到 10 MB,离 50 MB 还有距离。

但如果 URL 很长(比如带多层路径和中文参数),或者每条都带完整的 changefreq、priority 字段,体积会明显增大,也可能先撞到 50 MB 这条线。

索引文件的结构

拆分之后,需要一个「sitemap 索引文件」来告诉搜索引擎「这个站点有哪几个 sitemap」。

索引文件的根节点是 <sitemapindex>,里面每一项是 <sitemap>,包含一个 <loc> 指向子 sitemap 的地址:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://www.example.com/sitemap-1.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://www.example.com/sitemap-2.xml</loc>
  </sitemap>
</sitemapindex>

注意索引文件里也可以为每个子 sitemap 标注 lastmod,表示该子文件内容最后变化的时间。

索引文件本身也有上限:最多包含 5 万个 sitemap 引用,体积不超过 50 MB。按每个子文件 5 万条计算,理论上一个索引能覆盖 25 亿条 URL,实际远远够用。

拆分策略

按什么维度拆分,影响后续维护的复杂度。几种常见策略:

按数量均分。最简单的做法,每 5 万条切一个文件。优点是实现容易,缺点是同一个栏目或同一类内容可能被切到不同文件里,后续更新时要重算全部文件。

按内容类型拆。例如文章一个文件、产品一个文件、分类页一个文件。优点是可维护性好——某一类内容更新时只需要重新生成对应的那个文件。缺点是各类数量不均,可能某些文件很小、某些超限。

按时间拆。例如按月或按年生成,sitemap-2026-01.xml、sitemap-2026-02.xml。优点是新增内容只影响最新那个文件,历史文件不需要重新生成。适合内容持续增长、历史内容不常改动的站点。

对于大型内容站,按时间拆配合按类型拆通常是最好维护的组合。中小站点按数量均分就够了。

分片的大小控制

分片时不必正好卡在 5 万条。留一些余量更稳妥,比如每片 4 万条。

原因是后续可能有新内容插入到已有分片里(如果按类型或按时间拆分),留余量可以避免频繁重切。另外不同工具对上限的实现可能有细微差异,留余量能提高兼容性。

分片命名建议用有意义的规则,比如 sitemap-articles-1.xml、sitemap-2026-09.xml。纯数字编号在分片数量多时不好排查。

提交与声明

拆好之后需要让搜索引擎知道这些文件的存在。

第一种方式是在 robots.txt 里声明索引文件的地址:

Sitemap: https://www.example.com/sitemap.xml

只要声明索引文件即可,搜索引擎会顺着索引找到所有子文件,不需要逐个声明。

第二种方式是通过搜索资源平台手动提交索引文件地址。

第三种方式是让索引文件的地址符合惯例(比如就叫 sitemap.xml),搜索引擎可能会自动尝试访问。

推荐同时做前两种。robots.txt 声明是基础,搜索资源平台提交能加快发现速度。

需要注意的几个细节

第一,所有文件必须是绝对地址。子 sitemap 的 <loc> 和页面的 <loc> 都不能是相对路径。

第二,编码统一为 UTF-8,与 XML 声明一致。中文 URL 需要按 XML 规则正确转义。

第三,只放希望被收录的规范地址。不要把带参数的重复页面、需要登录的页面、搜索结果页塞进去。分片数量再多,也不应该用来容纳低价值页面。

第四,更新时保持文件地址稳定。如果每次重新生成都改变文件名,搜索引擎会认为旧文件消失了、新文件出现了,需要重新发现。保持命名稳定,只更新内容,效果更好。

检查清单

  • 单个 sitemap 最多 5 万条 URL、未压缩体积不超过 50 MB
  • 超过限制时拆分为多个文件,并用 sitemapindex 索引文件串起来
  • 索引文件本身也有 5 万条与 50 MB 的上限
  • 拆分可按数量、按类型或按时间,大型内容站建议按时间与类型组合
  • 每片留些余量(如 4 万条),避免频繁重切
  • 只需在 robots.txt 声明索引文件,搜索引擎会顺着找到所有子文件
  • 所有地址用绝对路径,编码统一 UTF-8,只放规范地址
阅读 10