搜尋抓取

Sitemap 索引與分段:大站怎么分批把 URL 交给蜘蛛

当站点 URL 數量變多,單個 Sitemap 往往不够用。本文說明 Sitemap 索引文件的作用、分段思路、常见限制,以及如何與内鏈和抓取日誌配合,让蜘蛛更顺畅地發現有效頁面。

搜尋抓取

Sitemap 索引與分段:大站怎么分批把 URL 交给蜘蛛

為什么要把 Sitemap 拆開

單個 Sitemap 文件能放多少 URL,协议里有上限。多數搜尋引擎對單個文件的數量和体积都有限制,超過之後可能只讀取前面一部分,後面的 URL 就不一定進入抓取队列。對大站来说,最稳妥的做法不是把所有連結塞進一個文件,而是用 Sitemap 索引文件把多個子 Sitemap 组织起来,让蜘蛛按文件分批讀取。

索引文件本身不包含頁面 URL,只列出子 Sitemap 的地址和可選更新時間。它像一個目錄,告诉蜘蛛“這個站点的 URL 分成了哪几批,分別在哪里”。這样做的好處是,某一批更新时,只需要让對應子 Sitemap 變化,不必让整個站点地图都重新抓取。

分段时按什么维度拆

分段没有唯一标准,但最好让每個文件内部有相對一致的逻辑,方便後續观察和维護。

  • 按内容類型:文章、商品、分類、标簽頁分開。不同類型頁面的更新频率和抓取價值不同,分開後更容易判断哪一批被讀取。
  • 按目錄或频道:适合内容量大、目錄结构清晰的站点。比如 /news/、/product/、/help/ 各自一個文件。
  • 按更新時間:把近期更新的 URL 放在一個文件里,歷史内容放在另一個文件。這样蜘蛛優先讀取活跃文件时,能更快看到新内容。
  • 按語言或地区:多語言站点可以按語言拆分,减少無關 URL 混在一起。

拆得太碎也不见得好。文件數量過多,索引文件會變長,蜘蛛需要額外跳轉获取。通常先按主要類型或目錄分成几十個以内,再根據抓取日誌調整。

URL 放進 Sitemap 之前要確認的事

Sitemap 只负责“告知”,不保證一定被抓取。放進去的 URL 如果本身有問题,反而會浪費蜘蛛的讀取次數。

  1. URL 必须返回正常狀態碼。把 404、410、需要登入、跳轉到其他地址的 URL 放進去,意义不大。
  2. 尽量使用規范地址。带跟踪參數、大小寫不一致、重复路径的 URL,最好先收敛到 canonical 地址。
  3. 只放可索引頁面。列表頁的篩選结果、站内搜尋结果、用戶個人頁,如果不希望被索引,不要寫進 Sitemap。
  4. 不要依赖 Sitemap 替代内鏈。Sitemap 是补充入口,内鏈才是蜘蛛持續發現頁面的主要路径。

索引文件怎么寫,放在哪里

索引文件通常放在站点根目錄,命名常见為 sitemap_index.xml,也可以在 robots.txt 中声明。子 Sitemap 的地址建议使用绝對 URL,並保持稳定;如果地址频繁變化,蜘蛛需要重新识別入口。

如果站点有多個域名或子域,可以在索引文件中统一列出,但要注意每個子 Sitemap 内的 URL 必须属于同一個主机名,不要把多個域名的 URL 混在一個文件里。

索引文件不是越大越好。它的作用是让蜘蛛找到子文件,而不是代替子文件承载 URL 列表。

和抓取路径、日誌配合观察

提交之後,不要只看“是否成功提交”。更實际的做法是翻服務器日誌,看蜘蛛有没有請求 Sitemap 索引、請求了哪些子文件、請求後是否繼續抓取里面的 URL。

  • 如果索引被讀取,但子文件很少被請求,可能是索引中文件太多,或者子文件地址不可訪問。
  • 如果子文件被讀取,但其中 URL 没被抓取,检查這些 URL 是否被 robots.txt 拦截、是否有 noindex、是否返回異常狀態。
  • 如果某批 URL 長期不被讀取,可以調整分段,把更重要的内容單獨放一個文件,並确保该文件在索引中靠前出現。

另外,服務器稳定性會影响 Sitemap 的讀取。如果子文件在高峰期频繁超时,蜘蛛可能降低讀取频率。把 Sitemap 文件做成静態资源,或者放在不容易被動態逻辑拖慢的位置,會更容易保持稳定。

一個可执行的检查顺序

  1. 確認單個 Sitemap 文件没有超過數量和体积上限。
  2. 按内容類型或目錄分成若干子文件,並生成索引文件。
  3. 清理其中的非規范 URL、死鏈和不可索引頁面。
  4. 在 robots.txt 或搜尋资源平台提交索引文件地址。
  5. 观察日誌:索引是否被讀、子文件是否被讀、URL 是否被繼續抓取。
  6. 根據抓取结果調整分段,不要频繁改動文件地址。

Sitemap 索引與分段不是一次配置就結束的事。它更像给蜘蛛画了一張分批讀取的地图:地图清楚,蜘蛛少走弯路;地图混乱,提交了也未必有好的抓取表現。把结构、狀態碼和内鏈一起看,才能判断問题出在哪一层。