搜尋抓取

Sitemap 索引文件怎么组织:分片多了之後,蜘蛛還能顺着走吗

站点 URL 變多後,Sitemap 往往要拆成分片並加一個索引文件。本文從抓取路径的角度,說明索引與分片的分工、分片切分方式、robots 声明和日誌驗證方法,並列出分片地址失效、lastmod 不同步、URL 形態不统一等常见問题,帮助蜘蛛更顺地讀到每一片。

搜尋抓取

Sitemap 索引文件怎么组织:分片多了之後,蜘蛛還能顺着走吗

站点 URL 上萬以後,單個 Sitemap 很快就塞不下了。這时通常會用分片文件加一個索引文件来组织。它看起来只是文件拆分,實际上會影响蜘蛛顺着入口找到分片、再從分片讀到具体 URL 的路径。分得好,蜘蛛少绕路;分得乱,入口在,後面的路却断断續續。

索引文件和分片各管什么

Sitemap 索引文件本身不直接列頁面 URL,它只列分片文件的位置和最後修改時間。蜘蛛先讀索引,再按里面的地址去請求分片,最後從分片里拿到 URL。這個层級要保持简單,索引指向分片就够了,不要再做多层索引套索引,否則蜘蛛每多一跳都要多花一次請求。

  • 單個 Sitemap 文件建议不超過 50,000 個 URL,未压缩体积不超過 50MB。
  • 索引文件同样有數量和体积上限,通常也是 50,000 條和 50MB。
  • 分片和索引都應返回正常的 200 狀態,内容類型為 XML。
  • 索引里的 lastmod 要跟分片實际更新時間對得上,不要随手寫。

分片按什么维度切更顺

分片不是越细越好。常见做法是按栏目、頁面類型或更新時間切分。比如商品詳情一個分片、文章一個分片、专题聚合一個分片。這样蜘蛛抓取时,分片内部的 URL 主题接近,抓取节奏也更容易稳定。如果按時間切,注意別让舊分片長期不更新却反复出現在索引里,蜘蛛每次来都讀一遍没有變化的文件,也是無谓消耗。

  • 每個分片只放規范化後的绝對 URL,统一协议、域名、大小寫和结尾斜杠。
  • 同一個 URL 不要出現在多個分片里,减少蜘蛛重复判断。
  • 分片内 URL 數量不要顶到上限,留一点余量方便後續追加。
  • 分片文件名保持稳定,避免频繁改路径,让已發現的舊分片變成死鏈。

入口怎么给,蜘蛛才知道去哪讀

索引文件生成後,需要在 robots.txt 里声明它的地址,也可以同时提交给搜尋引擎的站長平台。robots.txt 里寫 Sitemap 时用完整绝對地址,不要寫相對路径。如果站点有多個子域或移動站,每個可抓取的主机最好都有自己的 Sitemap 入口,別把不同主机的 URL 混進同一個分片。

声明之後,還要看日誌確認蜘蛛确實来讀了索引和分片,而不是只訪問了索引文件就离開。若索引正常但分片長期没有請求,優先检查分片地址是否被 robots 規則挡住、是否返回了 404 或 403,以及索引里的地址有没有寫错。

几個容易让路径断掉的细节

  • 分片里混入重定向 URL 或已刪除頁面,蜘蛛跟着跳几次後可能降低對该分片的信任。
  • 索引文件指向一個不存在的分片,或分片被防火墙拦截,都會让後續抓取路径中断。
  • 分片更新後,索引里的 lastmod 没有同步,蜘蛛可能按舊時間判断,减少回訪。
  • URL 參數顺序、大小寫、http 與 https 混用,會让同一頁面被拆到不同分片里。
  • 用 gzip 压缩分片可以节省带宽,但要确保服務器返回正确的 Content-Encoding。
Sitemap 是给蜘蛛递线索,不是收錄保證。索引和分片组织得再整齐,頁面本身如果内容單薄、内鏈孤立,抓取路径仍然走不深。

最後回到站点运营的视角:Sitemap 索引與分片是一套需要長期维護的基础设施。每次栏目調整、URL 規則變更、域名迁移,都要同步检查索引里的分片地址是否還有效。定期從服務器日誌里看蜘蛛讀了哪些分片、哪些分片一直冷着,比反复提交入口更有用。