先确认是不是真的需要拆
搜索引擎对单个 sitemap 文件有两项硬限制:URL 条数不超过 50000 条,未压缩体积不超过 50MB。如果站点只有几千个页面,一个文件完全够用,拆得太碎反而增加蜘蛛获取地图文件的次数。真正需要拆分的情况通常是:栏目页加内容页已经超过五万条;正文里图片、视频等条目多,单文件体积先撞上限;或者站点由多个子站、多语言目录组成,希望分开观察。
三种常见的分片方式
- 按栏目拆:新闻、产品、问答各一份,和站点结构一致,后续增删栏目时改动最小。
- 按内容类型拆:文章、商品、标签聚合、作者页分开,方便单独控制哪些类型值得提交。
- 按时间拆:按月或按季度切片,常见于更新量大的资讯站,最新一份文件小、变动频繁,旧文件基本不动。
实际站点往往是混合使用,比如「产品-2024」「文章-2025-01」,命名保持可读,出问题时能在服务器日志里一眼认出来。
索引文件怎么写
sitemap 索引文件本身不是页面清单,它只列出子地图的地址和最后修改时间,不能把普通 URL 混进去。每个子地图都必须能被正常访问、返回 200 状态码,且内容是有效的 XML。索引文件同样有数量上限,一般支持最多 50000 个子地图,绝大多数站点远达不到。
一个常见的误操作:把索引文件提交给搜索引擎,却在 robots.txt 里把子地图路径整段屏蔽。结果是索引读到了,子地图全部取不到。
lastmod 不是随便写的
lastmod 表示这份文件里内容的最后实质性修改时间。模板改版、广告位调整、页脚换文案这类不影响正文的改动,不需要刷新 lastmod;否则每次全站更新,蜘蛛都会按「有新内容」来处理,白白消耗抓取预算。如果站点无法准确给出时间,宁可不写这个字段,也不要统一写死成当天日期。
分片之后的日常维护
- 新增内容落到对应的子地图里,避免出现一份「其他」文件无限膨胀。
- 下线的页面从地图中移除,不要留着一堆 404、410 的旧地址。
- 栏目合并或迁移时同步调整子地图,并在 robots.txt 的 Sitemap 指令里更新索引地址。
- 定期用日志确认地图文件的抓取情况:返回码、抓取频次、有没有长期取不到的文件。
几个容易被忽略的细节
- 地图里写的地址要和线上最终地址完全一致,包括协议、主机名、大小写和末尾斜杠。
- 非 ASCII 字符、含参数的 URL 需要做转义处理,别直接塞入原始中文。
- 压缩包可以减小传输体积,但解压后的体积仍然受限制。
- 分片不是越多越好。几百个子地图会让蜘蛛把时间花在地图文件本身,而不是内容页。
站点规模不大的时候,sitemap 只是补漏手段,重点还是靠内链和栏目结构把页面暴露出来。等到确实需要分片,再按上面的思路整理一遍,通常比一次性推倒重来更省事。