搜尋抓取

孤儿頁與断掉的内鏈:URL 明明存在,蜘蛛為什么一直没走到

站内有些頁面明明能正常打開,却很少被抓取,原因往往不是服務器慢,而是它們没有可走的内鏈入口。本文梳理孤儿頁與内鏈断裂的常见成因,给出用抓取日誌、Sitemap 與全站爬取對照排查的方法,以及改版、下线栏目後如何避免入口被悄悄切断。

搜尋抓取

孤儿頁與断掉的内鏈:URL 明明存在,蜘蛛為什么一直没走到

有些頁面在浏览器里能正常打開,服務器日誌里却几乎看不到蜘蛛的訪問。遇到這種情况,很多人第一反應是服務器慢或被限流,但更常见的原因是:這個 URL 在站内没有任何一條可走的連結指向它。它存在,只是蜘蛛没有走到它的路。

有 URL 不等于有入口

蜘蛛發現一個 URL,主要靠三條路:站外連結、Sitemap、站内連結。站外連結和 Sitemap 能把 URL 送到蜘蛛面前,但决定它會不會被持續回訪的,往往是站内有没有稳定的入口。如果一個頁面只出現在 Sitemap 里,站内任何位置都点不到它,那它就是一個典型的孤儿頁。

孤儿頁不是错誤頁。它返回 200,内容也完整,只是缺少被反复走到的路径。抓取资源有限时,這類頁面通常排在队列靠後的位置,重新抓取的間隔也更長。

孤儿頁通常是怎么产生的

  • 栏目改版:導航结构重做後,舊栏目頁的入口被整体移除,頁面本身却還留着。
  • 内容下架不彻底:文章從列表頁撤下,但詳情頁没有刪除,也没有做跳轉或 noindex。
  • 分頁只保留首頁入口:列表頁翻到第三頁之後,就没有再指向後續頁面的連結。
  • 導航依赖前端渲染:連結寫在 JS 里,蜘蛛拿到的第一份 HTML 中並不存在這些 a 标簽。
  • 聚合頁與标簽頁:由系統自動生成,却没有挂到任何導航或列表上。
  • 活動頁、专题頁:临时上线後從首頁撤下,但 URL 仍在對内對外使用。

断掉的内鏈和孤儿頁一样麻烦

還有一種情况更隐蔽:連結是有的,但走不通。比如内鏈指向的地址返回 404,或者目标頁面被 noindex、被 robots.txt 屏蔽,又或者連結只是 onclick 事件、没有真正的 href。對蜘蛛来说,這條路径到此為止,後面的 URL 就等于没有入口。

所以排查时不能只看“頁面上有没有連結”,還要看這條連結点下去之後,蜘蛛能拿到什么狀態碼、能不能繼續往下走。

怎么把入口断掉的頁面找出来

  1. 從抓取日誌入手。按 URL 匯總一段時間内的蜘蛛訪問次數,把長期為 0 或极低的頁面挑出来,同时排除 robots.txt 屏蔽、參數頁、静態资源等合理情况。
  2. 和 Sitemap 對照。Sitemap 里有、日誌里几乎没有的 URL,是孤儿頁的高概率候選。
  3. 做一次從首頁出發的全站爬取。只顺着可点击的 a 連結走,看看哪些 Sitemap 中的 URL 根本走不到。這一步能直观暴露入口缺失的位置。
  4. 取三份名單的差集。Sitemap 名單、日誌名單、爬取可達名單,三者的差集就是需要處理的對象。
  5. 补上兜底入口。站内搜尋、後台内容列表、相關推荐模块都可以作為額外入口,但要確認這些入口對蜘蛛是可訪問的。

修复时的優先級和後續保持

  • 先修有實际價值的頁面:仍有外部連結指向、有流量或轉化意义的,優先补内鏈。
  • 确實不需要保留的頁面,明确處理:刪除、301 到相近内容,或設定 noindex,而不是让它悬空。
  • 补内鏈时優先選语义相關的頁面互相連結,比在頁脚堆一堆連結更自然,也更稳定。
  • Sitemap 可以作為兜底,但不宜長期替代内鏈入口;它解决“知道有這個 URL”,解决不了“這條路径是否被反复走到”。
  • 改版、下线栏目、調整導航之前,先列一份入口變化清單,上线後對照日誌確認這些 URL 還在被訪問。
内鏈是長期资产,Sitemap 更像一次性的通知。入口补得越早,URL 被重新走到的机會越稳定。

小结

当一個頁面長期抓取寥寥,先別急着怀疑服務器或抓取预算。從首頁出發,试着只用鼠标点一遍,看能不能走到它。走不到的頁面,多半就是入口出了問题。把入口补齐,再回头看日誌,通常比反复調整 Sitemap 字段更有意义。