蜘蛛池知识

蜘蛛池里的 XML 站点地图:它和入口頁各自负责什么

站点地图和入口頁在蜘蛛池里干的是两件不同的事:前者负责把 URL 名單交出去,後者负责铺出一條蜘蛛能走的路径。本文說明 sitemap 值得做的几件事、寫法上的注意点、與入口頁的合理分工,以及几個容易踩的誤区。

蜘蛛池知识

蜘蛛池里的 XML 站点地图:它和入口頁各自负责什么

搭蜘蛛池的人常會問一個問题:既然有 XML 站点地图,能不能少做几個入口頁,直接把 sitemap 交出去就够了?這個想法不算离谱,但把站点地图当成入口頁的替代品,结果通常不理想。

sitemap 和入口頁干的是两件事

站点地图的作用是“告知”。它把一批 URL 列成清單交给搜尋引擎,让抓取調度知道這些地址存在。它不负责引導路径,也不负责把權重從一個頁面递到另一個頁面。

入口頁的作用是“带路”。蜘蛛落在入口頁上,顺着頁面里的連結一跳一跳往下走,形成一條可追踪的路径。這條路来自連結關系,而不是一份名單。

用一句话区分:sitemap 决定蜘蛛“知道”哪些 URL,入口頁决定蜘蛛“走到”哪些 URL。名單再全,没有路,抓取深度和重訪频次也很难起来。

站点地图在池子里值得做的几件事

  • 给新上线的入口頁一條快速通道。内鏈還没织好时,先把地址交出去,比干等蜘蛛自己發現要快。
  • 补齐孤立頁面。有些目标頁在内鏈结构里没被覆盖到,可以借 sitemap 做补充。
  • 帮抓取調度判断更新。寫得准确的 lastmod,能让重訪更有针對性,而不是一整片頁面反复重掃。

寫法上的几個要点

格式與体积

用标准 XML 格式,單文件的 URL 數量控制在通用規范上限以内(一般五萬條、未压缩五十兆字节),超了就分片,再用 sitemap index 匯總成一個索引文件。文件可以 gzip 压缩,但要確認能正常解压、内容類型正确,否則解析會直接失敗。

lastmod 不要乱寫

把 lastmod 每次都刷成“今天”,是最常见的坏习惯。搜尋引擎會拿它和頁面實际内容比對,長期對不上,這個字段就會被忽略,之後再寫也没人信。内容真的改了再更新,没改就保持原值。

只放能正常返回的地址

把 301、404、noindex 的頁面塞進 sitemap 没有意义,還會拉低整份文件的可信度。定期用脚本跑一遍狀態碼,把不正常的地址清出去,比堆更多 URL 有用。

在蜘蛛池里的合理分工

比較稳妥的做法是让 sitemap 交名單,入口頁铺路线:

  1. 新域名上线时,先放一批入口頁,同时提交 sitemap,两條路一起走。
  2. 入口頁之間互相連結,形成網状结构,保證從任意一個入口都能走到大部分頁面。
  3. sitemap 里以入口頁為主、目标頁為辅,不要把成千上萬條目标頁全堆進去。
  4. 把 sitemap 地址寫進 robots.txt,同时確認 robots 里没有把 sitemap 文件本身挡掉。

第四点经常被忽略:robots 里寫了 Disallow: / ,又指望蜘蛛来讀 sitemap,等于自己把门關上了。

几個容易踩的誤区

  • 以為提交了就一定會被收錄。提交只是告知,是否抓取、是否收錄由搜尋引擎自己决定,谁也保證不了。
  • 把所有頁面一股脑塞進去,包括标簽頁、分頁、带參頁面,结果抓取額度被稀释,重点頁面反而排不上。
  • sitemap 更新了却没有重新提交,robots 里也没有声明,蜘蛛很久都發現不了這份文件。
  • 多個站点共用同一份 sitemap,里面的 URL 属于另一個域名,這種交叉基本起不到作用。

一個简單的落地清單

  • 每站一份 sitemap index,按類型分片:入口頁、目标頁、归档頁分開。
  • 生成脚本自動校驗狀態碼與 lastmod,避免人工過一遍。
  • robots.txt 里寫上 Sitemap 行,並检查没有冲突規則。
  • 每周看一眼日誌里 sitemap 文件的抓取记錄,長期無人抓取就先查格式和声明。
  • 把它当辅助手段,不指望它替代入口頁和内鏈结构。
站点地图解决的是“知道”,内鏈解决的是“到達”。池子里真正起作用的是後者,前者只是让過程快一点点。