搜尋抓取

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. 抓取日誌出現異常时,先確認最近的抓取集中在哪個分片,再决定優先修哪一块。

把分片当作站内目錄结构的另一種映射,维護起来就不會太費劲:结构變了,分片跟着變;结构稳定,分片基本不用動。