搜尋抓取

Sitemap 列了、内鏈没指的 URL,蜘蛛會怎么處理

Sitemap 和内鏈是蜘蛛發現與抓取 URL 的两條线。Sitemap 负责把 URL 递到蜘蛛面前,内鏈决定蜘蛛愿不愿意顺着走、走多深。两者不一致时,常见结果是“已發現未抓取”或抓取频率很低。本文拆解几種典型情况,並给出检查與收口思路。

搜尋抓取

Sitemap 列了、内鏈没指的 URL,蜘蛛會怎么處理

做站点抓取排查时,常遇到一種情况:Sitemap 里明明列了某個 URL,站内却没有任何連結指向它。有人會問,既然 Sitemap 已经告诉蜘蛛了,為什么它還是不来抓,或者抓了一次就再也没動静?要回答這個問题,得先把 Sitemap 和内鏈在抓取鏈路里的角色分開看。

Sitemap 管“發現”,内鏈管“怎么走”

Sitemap 的主要作用是递线索:把一批 URL 集中交给搜尋引擎,帮助蜘蛛知道“站点里還有這些地址”。它解决的是 URL 發現問题,尤其是那些入口較深、点击距离較遠、或者新生成的頁面。

但蜘蛛决定怎么抓、抓多深、多久回来一次,更多依赖站内連結结构。内鏈相当于一條條可走的路,蜘蛛顺着連結從已知頁面走到新頁面,同时获得上下文:這個頁面在站内處于什么位置、和哪些主题相關、有多少個入口指向它。Sitemap 里的一條 URL 记錄,通常不提供這些路径信息。

只靠 Sitemap 的 URL 會经歷什么

如果一個 URL 只在 Sitemap 里出現,站内没有任何内鏈指向它,常见表現有几類:

  • URL 被發現後進入待抓取队列,但優先級較低,抓取時間可能明顯晚于有内鏈的頁面。
  • 首次抓取後,因為缺少内鏈入口,蜘蛛後續重抓时不容易再次走到它,更新同步會變慢。
  • 在抓取预算有限的情况下,這類孤立 URL 往往排在主路径頁面後面。
  • 如果该 URL 還伴随内容單薄、重复或參數過多,抓取意愿會更低。

這不等于 Sitemap 没用。它让 URL 至少進入發現环节,比完全不被知道要好。但發現和抓取是两件事,從發現到持續抓取,中間還需要路径支撑。

内鏈没有、Sitemap 有的常见原因

這種不一致通常不是故意造成的,而是站点结构變化後的遗留問题:

  • 頁面改版或栏目調整,舊内鏈被移除,但 Sitemap 仍由程序自動生成,没同步清理。
  • 詳情頁數量大,列表頁只展示一部分,其余頁面只能靠 Sitemap 暴露。
  • 篩選、排序、分頁參數生成的 URL 被寫進 Sitemap,但站内没有稳定的静態入口。
  • Sitemap 由插件按資料库全量輸出,把已下线、已合並的地址也带了出来。

反過来也有:内鏈指向了某 URL,但 Sitemap 没收錄。這種情况蜘蛛通常仍能顺着連結發現,只是缺少一份集中声明,在新頁面較多时發現速度可能慢一些。

怎么检查两者是否對得上

可以定期做一次抽样核對,不必全站逐條比對:

  1. 從 Sitemap 中随机抽取若干 URL,用站内搜尋或連結查询工具看是否有内鏈入口。
  2. 在服務器日誌里查看這些 URL 的蜘蛛請求次數,和同层級有内鏈的頁面做對比。
  3. 看抓取統計中“已發現未抓取”的 URL 是否集中在這類孤立頁面。
  4. 检查 Sitemap 生成逻辑,確認是否把 404、301、參數頁大量寫入。

如果一批 URL 長期只有 Sitemap 记錄,没有内鏈,也没有被抓取记錄,基本可以判断它們没有進入主抓取路径。

處理思路:以主路径為主,Sitemap 做补充

更稳妥的做法,是让内鏈和 Sitemap 分工明确,而不是互相替代。

對于希望被持續抓取、内容有價值的頁面,優先补内鏈:從相關栏目、聚合頁、詳情頁正文中加一條合理的連結。位置自然、锚文本能說明目标頁面主题即可,不必堆砌。

對于數量大、更新频繁、但站内入口有限的頁面,可以用 Sitemap 做补充發現,同时確認它們没有返回错誤狀態、没有被 robots 誤屏蔽。如果這些頁面本身不具备長期维護價值,也可以考虑不放進 Sitemap,避免把抓取资源引到低质地址上。

Sitemap 更适合作為“發現清單”,而不是“權重传递通道”。指望只把 URL 寫進 Sitemap 就获得稳定抓取,往往會失望;反過来,只要内鏈结构清晰,即使 Sitemap 暂时不完整,蜘蛛也能顺着主路径走到大部分重要頁面。

一句话收口:Sitemap 让蜘蛛知道有這個地方,内鏈让蜘蛛愿意走過去。两者一致时抓取最顺,不一致时先补路径,再調清單。