先区分两件事:内容好不好,和有没有入口
收录出问题时,多数人的第一反应是检查内容质量、修改标题、重新提交。但如果一个页面在站内没有任何链接指向它,站点地图里也没有它,那么它很可能连被抓取队列看见的机会都没有。这类页面通常被称为孤岛 URL(orphan URL)。
它和质量差导致不收录是两回事:质量问题的页面会被抓取、被评估,然后才被判定为不值得索引;而孤岛页面的状态往往停留在「未知」,爬虫根本不知道它存在。
爬虫发现新 URL 的三条主要路径
一个 URL 要进入待抓取队列,通常得从下面某个入口被顺藤摸瓜地发现:
- 站内链接:最稳定也最重要的一条。爬虫从已知页面出发,沿 <a> 标签逐层向外扩展。
- 站点地图:适合提交数量大、层级深或内链薄弱的页面,但它更像是补漏手段,不能完全替代内链。
- 外部链接:其他网站指向你的链接同样能被发现,但可控性最低,也不适合依赖。
除此之外,重定向链、被抓取过的旧 URL 里的新链接,也可能成为入口。但把希望寄托在这些随机路径上,会带来很大的不确定性。
内链最常断掉的几个位置
1. 链接藏在需要交互才出现的地方
下拉菜单、Tab 切换、点击展开的「更多」列表,如果它们不是默认出现在 HTML 里,爬虫就可能看不到其中包含的链接。判断方法很简单:打开页面源代码搜索那个 URL,搜不到就意味着这条路对爬虫是断的。
2. 依赖 JS 渲染出来的导航
使用前端框架时,导航链接常常由脚本动态插入。渲染能力强的搜索引擎能处理一部分,但渲染有延迟、有预算,也不保证每个页面都会执行。把关键导航保留一份可被直接解析的 HTML 链接,是更稳妥的做法。
3. 分页只提供「上一页 / 下一页」
列表页很长时,若翻页只暴露相邻两页的链接,靠后的内容虽然理论上可到达,但点击深度会非常深,被发现的优先级也会被推后。适当保留可点击的数字页码,或按分类、时间归档建立入口,能显著缩短路径。
4. 被属性挡住的链接
nofollow、rel="ugc"、robots 指令或 onclick 跳转,都会改变爬虫对链接的处理方式。它们不一定阻止发现,但会让这条路径的价值打折。站内重要的导航与内容入口,不建议加这类属性。
怎么找出站内的孤岛页面
- 用爬虫工具或站点审计工具抓一遍全站,得到「站内可到达的 URL 列表」。
- 导出站点地图、后台内容库或数据库中的所有 URL,作为第二份列表。
- 对照两份列表,只在第二份里出现的就是可疑的孤岛页面。
- 再从服务器日志里看看这些 URL 是否出现过。如果长期完全没有任何抓取记录,基本可以确认入口缺失。
- 抽查几个孤岛页面的源代码,确认是不是链接被 JS、属性或交互遮挡了。
补救的顺序
- 先判断这个页面值不值得被收录。内容重复、已下线、纯功能页,直接让它保持孤立甚至设置 noindex 更合适。
- 值得保留的页面,回到站内找自然的相关位置加链接——上级分类、相关文章、正文内提及,优先选择语义相关的位置。
- 补充站点地图,作为兜底入口,但不要把它当成唯一手段。
- 如果页面属于某个栏目,检查该栏目的列表页是否覆盖了它,分页是否可完整遍历。
- 改完后观察一段时间日志,确认抓取是否出现,再判断是否需要进一步调整。
几点提醒
第一,孤岛页面不一定会被索引,但也不等于永久不被发现,外链、分享、旧页面残留链接都可能把它带出来,所以别只看单次结果。
第二,内链的意义不只是「让爬虫找到」,也包括给页面一个明确的位置和上下文。单纯为了收录堆砌链接,效果有限,还可能稀释其他页面的入口。
第三,处理这类问题时,优先解决入口,而不是急着重新提交或反复修改内容。入口没通的情况下,后两步通常不会带来变化。