站内经常出現這種情况:某一批 URL 能被蜘蛛抓到,日誌里也有记錄,但你在頁面上怎么点都找不到入口。這類没有内鏈指向、只能靠外部途径被發現的頁面,通常被称為孤儿頁面。它們不一定有問题,但它們的抓取路径和正常頁面完全不同,值得單獨拿出来看。
孤儿頁面是怎么被蜘蛛發現的
没有内鏈,不等于蜘蛛一定不知道這個 URL。常见的發現途径有這几種:
- Sitemap:XML Sitemap 里直接列出的 URL,是孤儿頁面最主要的發現来源。
- 外部連結:別的站点鏈過来,蜘蛛顺着外鏈就進来了,哪怕站内一條連結都没有。
- 歷史抓取记錄:URL 以前被收錄過,蜘蛛會按舊记錄回訪。
- 站内搜尋與篩選參數:某些篩選组合會生成新的 URL,被蜘蛛在抓取时试探到。
- JavaScript 渲染出的連結:首屏 HTML 里没有、渲染後才出現的連結,也可能把 URL 带出来。
- 重定向:301、302 指向的目标 URL,同样會被记錄下来。
這些路径有一個共同点:它們不依赖站内導航结构。所以頁面即使被抓到,位置也很脆弱——一旦 Sitemap 更新失誤或者外鏈失效,蜘蛛就可能不再回来。
被抓到和能被持續抓取是两件事
孤儿頁面最典型的表現是抓取频率极低。正常頁面有内鏈不断被蜘蛛经過,等于持續给它投票;孤儿頁面唯一的入口在 Sitemap 里,蜘蛛每次都要重新讀一遍 Sitemap 才能想起来。在抓取額度有限的情况下,這類 URL 往往排在後面。
另外,孤儿頁面通常也缺少内部連結传递的上下文。蜘蛛只看到一個孤立的 URL,不知道它在站内處于什么位置、属于哪個主题,這對理解頁面内容没有帮助。
怎么找出站内的孤儿頁面
- 導出 Sitemap 里的全部 URL。
- 用爬虫工具從首頁出發,抓一遍站内可点击到的全部連結。
- 两份清單做差集:只在 Sitemap 里、不在爬取结果里的,基本就是孤儿頁面。
- 再和服務器日誌對照,看這些 URL 是否真的被抓過、抓取频率如何。
反過来也值得查一遍:有些頁面在内鏈里,却没有進 Sitemap。這類不算孤儿,但同样需要確認是否值得被收錄。
补内鏈的几種做法
- 频道頁或聚合頁:把同類内容集中列出,是最省事的入口来源。
- 面包屑導航:让每個詳情頁都有一條回到上級栏目的路径。
- 正文语境連結:在相關内容里自然地鏈過去,比堆在侧邊栏更有效。
- 相關推荐、上一篇/下一篇:适合内容量大的站点,能顺带把深层頁面拉近一些。
补内鏈的目标不是让每個頁面都堆满連結,而是让蜘蛛從入口出發,能顺着一條合理的路径走到它。連結放得自然、位置稳定,比數量更重要。
把 Sitemap 当作补充手段,而不是唯一入口。内鏈才是蜘蛛長期回訪的路径。
有些孤儿頁面是有意為之
並不是所有孤儿頁面都要救。篩選參數頁、測試頁、已下线的活動頁、登入後才能看的頁面,本来就不适合被大量抓取。這類頁面更适合用 robots.txt 或 noindex 明确處理,而不是硬塞進内鏈里,白白占掉抓取額度。
所以處理孤儿頁面的第一步不是补連結,而是先分清楚:這個 URL 是希望被持續抓取,還是希望它安静一点。分完類再動手,後面會省很多事。