搜尋抓取

Sitemap 索引文件怎么拆:子地图的组织、提交與驗證

当站点 URL 數量超過單個 Sitemap 的承载上限,索引文件能把多個子地图串起来。本文讲拆分维度、索引寫法、提交位置和驗證方法,以及子地图 404、lastmod 失真等常见問题,帮助蜘蛛更顺畅地發現 URL。

搜尋抓取

Sitemap 索引文件怎么拆:子地图的组织、提交與驗證

当站点 URL 數量達到一定規模,單個 Sitemap 往往放不下,或者虽然放得下,但每次更新都要重新生成整個文件。這时 Sitemap 索引文件(Sitemap index)就派上用场:它本身不列具体頁面,只列出多個子 Sitemap 的地址,让蜘蛛按图索骥地去找。

什么时候需要拆出索引文件

常见触發條件有三個:一是 URL 總數超過單個 Sitemap 的上限,二是站点分多個栏目、語言或地区,更新节奏差异大,三是希望把不同類型的 URL 分開观察抓取情况。如果站点只有几百個頁面,一個普通 Sitemap 就够了,不必為了形式而套索引。

拆分子地图的几個常用维度

按栏目或内容類型

文章、商品、分類、标簽各自一個子地图,優点是定位清晰,某個栏目抓取異常时容易排查。缺点是子地图數量可能很多,索引文件會變長。

按更新時間

把最近更新的 URL 單獨放在一個子地图里,其余归档到歷史地图。這样蜘蛛抓取近期地图时能更快看到新内容,适合更新频繁的站点。但要注意 lastmod 必须真實,不要為了催促抓取而批量改成目前時間。

按語言或地区

多語言站点可以按語言拆分子地图,再配合 hreflang 使用。拆分後每個子地图只包含同一種語言的 URL,便于驗證覆盖情况。

索引文件本身的寫法要点

  • 索引文件只放子 Sitemap 的 loc,以及可選的 lastmod,不要直接放頁面 URL。
  • 不能嵌套索引,即索引文件里不能再指向另一個索引文件。
  • 所有子地图必须與索引文件同域,不能跨域引用。
  • 压缩成 gzip 时,要确保服務器返回正确的 Content-Type,並让文件可公開訪問。
  • 子地图的數量和單個文件大小都要在协议限制内,不要只關注 URL 條數。
索引文件的作用是告诉蜘蛛去哪里找,不是让蜘蛛必须抓。它解决的是發現效率,不解决内容质量與服務器稳定性。

提交與驗證

  1. 在 robots.txt 中寫一行 Sitemap 指令,指向索引文件的绝對地址,而不是某個子地图。
  2. 在搜尋资源平台提交索引文件,观察子地图是否被陆續抓取。
  3. 查看服務器日誌,確認蜘蛛請求的是索引文件還是子地图,狀態碼是否為 200。
  4. 定期检查索引里的每個子地图,避免出現 404、403 或返回 HTML 错誤頁的情况。
  5. 對比子地图中的 URL 與實际可訪問 URL,剔除已下线或重定向的地址。

常见問题與排查方向

  • 子地图 404:索引文件更新了,但舊子地图被刪除,蜘蛛仍按舊地址来抓。保留一段時間或做 301。
  • lastmod 失真:所有 URL 的 lastmod 都一样,蜘蛛會降低對该字段的信任,反而影响判断。
  • 索引文件過大:子地图太多導致索引本身超限,應合並低频子地图或按時間归档。
  • 只提交不维護:Sitemap 是動態资产,站点改版、栏目調整後要同步更新。

把 Sitemap 索引文件当作 URL 發現的基础设施,而不是一次性任務。结构清晰、更新真實、可稳定訪問,蜘蛛才更有可能按你安排的路径去走。蜘蛛池、主動推送等手段可以作补充,但不能替代内鏈、服務器响應和内容本身。