搜索抓取

孤岛 URL 的发现与修复:内链入口、Sitemap 与日志的核对顺序

孤岛 URL 指的是站内真实存在、却没有任何可抓取入口的页面。本文说明如何用访问日志与全站 URL 做差集,找出长期零抓取的页面,再按内链优先、Sitemap 兜底的顺序修复,最后回到抓取记录确认入口是否真正打通。

搜索抓取

孤岛 URL 的发现与修复:内链入口、Sitemap 与日志的核对顺序

孤岛 URL 指的是站点里真实存在、但没有任何可抓取入口指向它的页面。它可能返回 200,内容也正常,只是蜘蛛从首页出发沿着链接走,永远走不到。判断一个 URL 是否孤岛,不能靠肉眼翻页面,而要回到抓取记录里看它有没有被抓过、是从哪个来源被发现的。

孤岛 URL 通常是怎么出现的

  • 页面只从站内搜索、筛选器或表单提交后跳转到达,没有静态链接指向。
  • 旧版列表页改版后链接被移除,但详情页仍在对外提供服务。
  • 链接写在 JS 里,且渲染完成后仍未生成可抓取的 a 标签。
  • 链接被按钮点击事件包裹,或带上了 nofollow 等属性。
  • 页面只出现在 Sitemap 里,内链一侧完全断掉。

先核对,再修复

修复之前先把事实弄清楚,否则容易把“抓取得少”误判成“内容不行”。可以按下面的顺序核对:

  1. 从服务器日志或 CDN 日志中筛出搜索引擎蜘蛛的访问记录,按 URL 聚合。
  2. 把站点全部有效 URL(Sitemap、数据库、CMS 导出)与日志做差集,长期零抓取的就是候选。
  3. 对候选 URL 做一次内链检查:站内有没有任意页面以普通 a 标签指向它。
  4. 确认它不是被 robots.txt、登录墙或地域限制挡住,而是真的缺少入口。

这一步的价值在于区分两类问题:一类是入口缺失,属于结构问题;另一类是入口存在但优先级太低,属于路径深度问题。两者的处理方式并不相同。

修复顺序:内链优先,Sitemap 兜底

内链是蜘蛛发现 URL 的常规通道,Sitemap 更像一份补充清单。入口缺失的页面,优先从内容相关的页面加上自然链接,比直接塞进 Sitemap 更稳妥。Sitemap 适合兜住那些确实难以用内链覆盖的页面,比如数量庞大的长尾详情页。

加内链时的几个要点

  • 链接用标准 a 标签加 href,不要依赖 JS 点击跳转。
  • 锚文本写清页面主题,不要清一色“点击这里”。
  • 链接放在正文或与主题相关的模块中,避免集中堆在页脚。
  • 不要一次性给大批页面同时堆链接,先观察抓取节奏再放量。

Sitemap 的补充用法

Sitemap 里只放返回 200、可索引的规范 URL,避免把重定向、参数页、已被合并的旧地址混进去。分片更新时保持 lastmod 与实际修改时间一致,否则蜘蛛会逐步降低对这份清单的信任。

把入口核对做成例行检查

站点改版、栏目下线、模板调整都可能无意间剪断内链。可以每隔一段时间重复一次上面的差集核对,重点关注新上线的内容和改版涉及的栏目。如果站点有内部搜索、标签页或聚合页,也要确认它们的输出是普通链接而非纯接口数据,否则这些页面对蜘蛛来说并不构成入口。

修复后怎么确认有效

不要以“已经提交”作为结束。修复后一到两周,回到日志里看这些 URL 是否出现首次抓取,以及被抓取时的来源页面。如果仍然没有记录,继续检查内链是否真的可解析、页面是否可正常访问、服务器在高并发时是否返回 5xx。抓取本身是一个持续过程,短时间没有变化属于正常范围,不必反复改动结构。

孤岛 URL 的修复,本质是把“页面存在”变成“页面可到达”。入口通了,后续的抓取频率和收录情况才有讨论的基础。