搜尋抓取

Sitemap 分片與索引文件:大型站点的 URL 發現怎么组织

当站点 URL 數量超過單個 Sitemap 的承载范围,分片和索引文件就成為 URL 發現的基础设施。本文梳理分片拆分方式、索引文件的声明位置、分片内容检查以及更新與失效處理,帮助大型站点减少發現断点,让搜尋蜘蛛更顺畅地找到该找的頁面。

搜尋抓取

Sitemap 分片與索引文件:大型站点的 URL 發現怎么组织

站点規模變大後,單個 Sitemap 往往装不下所有 URL。分片和索引文件是常见做法,但它不是把文件切碎就完事。分片怎么切、索引文件放在哪、分片内容是否可訪問,都會影响搜尋蜘蛛能不能顺利發現 URL。

分片拆分:按什么维度切更合理

协议允许每個 Sitemap 最多放 50000 個 URL,未压缩大小不超過 50MB。實际拆分时,不必卡着上限,可以按内容類型、更新频率或栏目层級来分。這样後續排查和更新都更清楚。

  • 按内容類型:文章、商品、专题、帮助文档各自一個分片,便于观察哪類 URL 發現慢。
  • 按更新频率:高频更新的列表頁和低频的静態頁分開,减少每次全量重寫。
  • 按語言或地区:多語言站点分開,避免不同語言 URL 混在一起。

分片數量不是越多越好。几十個分片還算好管理,几百個就要考虑索引文件是否清晰、分片地址是否規則。

索引文件要能被稳定發現

Sitemap 索引文件本身也是一個入口。它需要被提交到搜尋资源平台,並在 robots.txt 中声明。索引文件里列出的分片地址必须是可訪問的绝對地址,返回 200 狀態碼,内容類型為 XML。如果分片開了 gzip,索引里的地址和實际返回要一致。

  • 索引文件不要嵌套索引文件,层級尽量只有一层。
  • 分片地址不要带随机參數或會话參數。
  • 分片里的 lastmod 要真實,不要每次生成都改成目前時間。
  • 分片文件不要設定 noindex,也不要用 robots.txt 屏蔽。

分片内容與内鏈互相驗證

分片负责告诉搜尋蜘蛛“這里有 URL”,但不保證它一定會抓取。要判断發現是否正常,可以把分片里的 URL 和站内連結、服務器日誌交叉看。如果某個分片里的 URL 長期没有抓取记錄,可能是分片本身有問题,也可能是這些 URL 缺少内鏈入口。

分片解决的是發現入口問题,抓取和索引還取决于頁面质量、服務器响應和内鏈结构。不要把分片当成收錄保證。

更新、下线與分片维護

分片不是生成一次就不用管。内容更新、頁面下线、改版換地址,都要同步到分片。處理时可以按下面顺序核對:

  1. 確認新 URL 已经能正常訪問,返回 200,並且頁面内容不是空壳。
  2. 把新 URL 加入對應分片,更新 lastmod,重新提交索引文件。
  3. 下线的 URL 從分片中移除,同时保留舊地址返回 410 或 404 一段時間,不要让舊地址直接跳向無關頁面。
  4. 改版換地址时,用 301 把舊地址指向新地址,並更新分片中的地址。
  5. 观察日誌里分片地址和頁面地址的抓取频率,確認没有出現只抓分片不抓頁面的情况。

常见配置错誤

  • 分片地址返回 HTML 错誤頁,搜尋蜘蛛拿到的是错誤内容。
  • 索引文件里寫的是相對地址,解析後指向不存在的路径。
  • 分片大小寫不一致,同一批 URL 出現两種寫法。
  • 把不同协议、不同域名下的 URL 混在同一個索引里。
  • 分片里包含大量重定向地址或參數地址,增加無效抓取。

大型站点的 URL 發現,往往不是缺一個入口,而是入口太多、太乱或者中途断掉。定期抽查索引文件、分片文件和日誌中的抓取痕迹,比一次性生成全部文件更有用。