有些頁面在浏览器里能正常打開,服務器日誌里却几乎看不到蜘蛛的訪問。遇到這種情况,很多人第一反應是服務器慢或被限流,但更常见的原因是:這個 URL 在站内没有任何一條可走的連結指向它。它存在,只是蜘蛛没有走到它的路。
有 URL 不等于有入口
蜘蛛發現一個 URL,主要靠三條路:站外連結、Sitemap、站内連結。站外連結和 Sitemap 能把 URL 送到蜘蛛面前,但决定它會不會被持續回訪的,往往是站内有没有稳定的入口。如果一個頁面只出現在 Sitemap 里,站内任何位置都点不到它,那它就是一個典型的孤儿頁。
孤儿頁不是错誤頁。它返回 200,内容也完整,只是缺少被反复走到的路径。抓取资源有限时,這類頁面通常排在队列靠後的位置,重新抓取的間隔也更長。
孤儿頁通常是怎么产生的
- 栏目改版:導航结构重做後,舊栏目頁的入口被整体移除,頁面本身却還留着。
- 内容下架不彻底:文章從列表頁撤下,但詳情頁没有刪除,也没有做跳轉或 noindex。
- 分頁只保留首頁入口:列表頁翻到第三頁之後,就没有再指向後續頁面的連結。
- 導航依赖前端渲染:連結寫在 JS 里,蜘蛛拿到的第一份 HTML 中並不存在這些 a 标簽。
- 聚合頁與标簽頁:由系統自動生成,却没有挂到任何導航或列表上。
- 活動頁、专题頁:临时上线後從首頁撤下,但 URL 仍在對内對外使用。
断掉的内鏈和孤儿頁一样麻烦
還有一種情况更隐蔽:連結是有的,但走不通。比如内鏈指向的地址返回 404,或者目标頁面被 noindex、被 robots.txt 屏蔽,又或者連結只是 onclick 事件、没有真正的 href。對蜘蛛来说,這條路径到此為止,後面的 URL 就等于没有入口。
所以排查时不能只看“頁面上有没有連結”,還要看這條連結点下去之後,蜘蛛能拿到什么狀態碼、能不能繼續往下走。
怎么把入口断掉的頁面找出来
- 從抓取日誌入手。按 URL 匯總一段時間内的蜘蛛訪問次數,把長期為 0 或极低的頁面挑出来,同时排除 robots.txt 屏蔽、參數頁、静態资源等合理情况。
- 和 Sitemap 對照。Sitemap 里有、日誌里几乎没有的 URL,是孤儿頁的高概率候選。
- 做一次從首頁出發的全站爬取。只顺着可点击的 a 連結走,看看哪些 Sitemap 中的 URL 根本走不到。這一步能直观暴露入口缺失的位置。
- 取三份名單的差集。Sitemap 名單、日誌名單、爬取可達名單,三者的差集就是需要處理的對象。
- 补上兜底入口。站内搜尋、後台内容列表、相關推荐模块都可以作為額外入口,但要確認這些入口對蜘蛛是可訪問的。
修复时的優先級和後續保持
- 先修有實际價值的頁面:仍有外部連結指向、有流量或轉化意义的,優先补内鏈。
- 确實不需要保留的頁面,明确處理:刪除、301 到相近内容,或設定 noindex,而不是让它悬空。
- 补内鏈时優先選语义相關的頁面互相連結,比在頁脚堆一堆連結更自然,也更稳定。
- Sitemap 可以作為兜底,但不宜長期替代内鏈入口;它解决“知道有這個 URL”,解决不了“這條路径是否被反复走到”。
- 改版、下线栏目、調整導航之前,先列一份入口變化清單,上线後對照日誌確認這些 URL 還在被訪問。
内鏈是長期资产,Sitemap 更像一次性的通知。入口补得越早,URL 被重新走到的机會越稳定。
小结
当一個頁面長期抓取寥寥,先別急着怀疑服務器或抓取预算。從首頁出發,试着只用鼠标点一遍,看能不能走到它。走不到的頁面,多半就是入口出了問题。把入口补齐,再回头看日誌,通常比反复調整 Sitemap 字段更有意义。