有些页面在浏览器里能正常打开,服务器日志里却几乎看不到蜘蛛的访问。遇到这种情况,很多人第一反应是服务器慢或被限流,但更常见的原因是:这个 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 字段更有意义。