搜索抓取

robots 拦截的连锁反应:一条 Disallow 如何切断整片抓取线索

robots.txt 拦下的不只是一条 URL,还会截断这条路径上挂着的内链线索。本文梳理容易被误伤的目录、Disallow 与 noindex 的区别,以及线索断掉后如何用 Sitemap、内链和 Allow 规则把抓取路径补回来。

搜索抓取

robots 拦截的连锁反应:一条 Disallow 如何切断整片抓取线索

在抓取这件事上,robots.txt 常被当成一个“开关”——想让搜索引擎少收录点东西,就写一条 Disallow。但它实际管的不是收录,而是蜘蛛能不能来抓。更值得留意的是:一条 Disallow 拦住的往往不只是一个页面,还会顺手切断这条路径上挂着的内链线索。

一条 Disallow,为什么影响的不止一条 URL

蜘蛛认识网站的方式很朴素:从一个 URL 出发,读到页面里的链接,再顺着链接走到下一个 URL。列表页、聚合页、标签页、分页页,通常是全站出链最密集的地方,很多详情页的第一条线索就来自这里。

如果这些目录被 Disallow 挡住,蜘蛛进不去,自然也就读不到里面的链接。结果就是:某些详情页明明在 Sitemap 里躺着,站内却几乎没有任何一条可被抓取的路径指向它,只能长期停在“已发现未抓取”。

容易误伤的几种路径

  • 搜索页与筛选参数页,例如 /search/、?filter= 这类地址被整段拦掉,而它们身上常常背着大量指向商品的链接。
  • 标签页、专题聚合页。它们本身内容单薄,但出链数量往往最多。
  • 分页路径,把第二页之后全部挡掉,等于让蜘蛛只看到列表的第一屏。
  • CSS 与 JS 目录。渲染需要这些资源,拦掉之后页面在蜘蛛眼里可能是空的。
  • 语言切换或移动端路径,写规则时顺手复制,容易连主站路径一起覆盖。
记住一点:Disallow 是“别来抓”,noindex 是“可以抓,但别收录”。想减少收录却保留链接传递,用 noindex;根本不想让蜘蛛碰,才用 Disallow。

线索断掉之后,怎么补回来

用 Sitemap 保住 URL 本身

Sitemap 能让蜘蛛知道“这个地址存在”,但解决不了页面之间怎么走的问题。它可以作为兜底线索,替代不了内链。

把内链挪到可抓取的页面上

在栏目首页、文章底部相关推荐、面包屑里补一条指向目标页的链接,通常比反复提交 Sitemap 更直接。线索要落在蜘蛛进得去的地方,才有意义。

用 Allow 做局部放行

robots 规则按最长匹配优先。如果只是不想让某类参数被大量抓取,可以在拦掉整个目录之后,对具体需要保留的路径单独 Allow,而不是一刀切。

怎么确认路径确实被截断了

  1. 翻服务器日志,看被拦目录是否长期没有蜘蛛请求,同时统计该目录原本承载了多少内链。
  2. 用 robots 测试工具,逐条检查关键路径是被拦还是放行。
  3. 把 Sitemap 里提交的 URL 数量,和日志里实际被抓取的数量做一次对比。
  4. 观察“已发现未抓取”的数量变化,如果它和某次 robots 修改的时间接近,基本可以定位原因。

把它当成一次常规检查

robots.txt 改动的影响不会当天全部显现,往往要等几轮抓取周期才看得清楚。建议改规则之前先想三件事:这条路径上有没有内链、这些链接指向的页面还有没有别的入口、拦掉之后抓取预算是不是真的省下来了。如果省下的预算换来一批页面失去线索,这笔账并不划算。