站点运营

站点运营:sitemap 分片与索引文件,站点变大后地图该怎么拆

站点 URL 涨到几万条以后,单个 sitemap 文件会先撞上条数和体积上限,这时需要拆成多个子地图,再用索引文件串起来。本文讲清什么情况该拆、几种常见分片方式、索引文件的写法、lastmod 的使用边界,以及分片之后如何维护和验证。

站点运营

站点运营:sitemap 分片与索引文件,站点变大后地图该怎么拆

先确认是不是真的需要拆

搜索引擎对单个 sitemap 文件有两项硬限制:URL 条数不超过 50000 条,未压缩体积不超过 50MB。如果站点只有几千个页面,一个文件完全够用,拆得太碎反而增加蜘蛛获取地图文件的次数。真正需要拆分的情况通常是:栏目页加内容页已经超过五万条;正文里图片、视频等条目多,单文件体积先撞上限;或者站点由多个子站、多语言目录组成,希望分开观察。

三种常见的分片方式

  • 按栏目拆:新闻、产品、问答各一份,和站点结构一致,后续增删栏目时改动最小。
  • 按内容类型拆:文章、商品、标签聚合、作者页分开,方便单独控制哪些类型值得提交。
  • 按时间拆:按月或按季度切片,常见于更新量大的资讯站,最新一份文件小、变动频繁,旧文件基本不动。

实际站点往往是混合使用,比如「产品-2024」「文章-2025-01」,命名保持可读,出问题时能在服务器日志里一眼认出来。

索引文件怎么写

sitemap 索引文件本身不是页面清单,它只列出子地图的地址和最后修改时间,不能把普通 URL 混进去。每个子地图都必须能被正常访问、返回 200 状态码,且内容是有效的 XML。索引文件同样有数量上限,一般支持最多 50000 个子地图,绝大多数站点远达不到。

一个常见的误操作:把索引文件提交给搜索引擎,却在 robots.txt 里把子地图路径整段屏蔽。结果是索引读到了,子地图全部取不到。

lastmod 不是随便写的

lastmod 表示这份文件里内容的最后实质性修改时间。模板改版、广告位调整、页脚换文案这类不影响正文的改动,不需要刷新 lastmod;否则每次全站更新,蜘蛛都会按「有新内容」来处理,白白消耗抓取预算。如果站点无法准确给出时间,宁可不写这个字段,也不要统一写死成当天日期。

分片之后的日常维护

  1. 新增内容落到对应的子地图里,避免出现一份「其他」文件无限膨胀。
  2. 下线的页面从地图中移除,不要留着一堆 404、410 的旧地址。
  3. 栏目合并或迁移时同步调整子地图,并在 robots.txt 的 Sitemap 指令里更新索引地址。
  4. 定期用日志确认地图文件的抓取情况:返回码、抓取频次、有没有长期取不到的文件。

几个容易被忽略的细节

  • 地图里写的地址要和线上最终地址完全一致,包括协议、主机名、大小写和末尾斜杠。
  • 非 ASCII 字符、含参数的 URL 需要做转义处理,别直接塞入原始中文。
  • 压缩包可以减小传输体积,但解压后的体积仍然受限制。
  • 分片不是越多越好。几百个子地图会让蜘蛛把时间花在地图文件本身,而不是内容页。

站点规模不大的时候,sitemap 只是补漏手段,重点还是靠内链和栏目结构把页面暴露出来。等到确实需要分片,再按上面的思路整理一遍,通常比一次性推倒重来更省事。