搜索抓取

Sitemap 索引文件分片:海量 URL 的发现入口怎么拆才不乱

单文件放不下时,Sitemap 索引文件就成了新的发现入口。本文讲清什么时候需要分片、按栏目/语言/更新频率怎么拆、单片上限与写法要点,以及分片之后如何在 robots.txt、站长平台与 HTML 站点地图页上保住入口,并列出常见的维护疏漏与检查节奏。

搜索抓取

Sitemap 索引文件分片:海量 URL 的发现入口怎么拆才不乱

Sitemap 的作用是给搜索蜘蛛一份明确的 URL 清单。当站点 URL 数量涨到几千、上万,单个文件会变得又大又难维护,这时通常要引入 Sitemap 索引文件(Sitemap Index),把众多子 Sitemap 组织成一个总入口。

什么时候该用索引文件

并不是所有站点都需要分片。判断标准大致有三条:

  • URL 总量接近或超过单个文件的容量上限;
  • 站点包含多个栏目、子域名或多语言版本,希望分批提交;
  • 不同板块的更新频率差异很大,混在一个文件里不好定位问题。

如果站点只有几百个页面,内链结构也清楚,一个普通 Sitemap 就够了,额外加一层索引反而增加维护成本。

分片维度怎么选

按栏目或目录拆

最常见也最省心的方式。文章、商品、帮助文档各自一个子 Sitemap,路径保持稳定,例如 /sitemap-articles.xml。某个板块出问题,只影响对应分片,排查范围小。

按语言或地区拆

多语言站点按语言分片,能看清每个语言版本的 URL 数量是否合理,也方便核对 hreflang 指向的页面是否都在这份清单里。

按内容类型或更新频率拆

更新频繁的列表页、新发布内容放一个分片,历史归档放另一个分片。这样在抓取日志里更容易判断:搜索蜘蛛是先去翻新内容,还是一直在旧归档里打转。

单片文件的边界与写法

  • 单个 Sitemap 的 URL 数量上限是 5 万条,未压缩体积上限 50MB,任一超标都要继续拆。
  • 条目地址必须是绝对 URL,注意实体转义与特殊字符编码。
  • 体积较大时可以使用 gzip 压缩,但索引文件里引用的地址要指向实际可访问的压缩文件。
  • 索引文件本身只列子 Sitemap 的位置与最后修改时间,不要再混入普通页面 URL。

分片之后,入口仍要能被找到

索引文件不会自己被发现。至少保证三件事:robots.txt 里声明主索引文件地址;在站长平台提交同一个地址;站内保留一个 HTML 版本的站点地图页,让用户和搜索蜘蛛都能顺着链接进入各分片。三条路径相互补位,单条失效时不至于完全断掉。

分片管理最容易踩的坑

  1. 只提交子分片,不提交索引:新增分片容易被漏掉,也看不到整体规模。
  2. lastmod 全站写成同一时间:这个字段就失去了参考意义,不如只对真正更新的分片做改动。
  3. 旧分片长期没人动:内容下线后分片仍指向 404 地址,成了无效入口。
  4. 频繁改名或换路径:每改一次,之前的入口就作废一次,历史提交记录也跟着断掉。
  5. 索引里塞外部地址:只有同一站点体系下的地址才适合放进索引。
索引文件解决的是“清单怎么组织”,不是“一定会被收录”。它让搜索蜘蛛更容易拿到一批可用地址,剩下的仍然取决于页面本身、内链结构和服务器稳定性。

一个够用的维护节奏

  1. 每月核对索引文件列出的分片是否都能正常访问,返回 200 且内容非空。
  2. 检查各分片的 URL 数量,接近上限时提前拆分。
  3. 内容下线时同步从分片移除,而不是把地址留在清单里。
  4. 抓取日志出现异常时,先确认最近的抓取集中在哪个分片,再决定优先修哪一块。

把分片当作站内目录结构的另一种映射,维护起来就不会太费劲:结构变了,分片跟着变;结构稳定,分片基本不用动。