常见问题

入口页被 robots.txt 屏蔽后,里面的目标链接还会被搜索蜘蛛发现吗

robots.txt 屏蔽入口页后,入口页里的目标链接还能被发现吗?本文把抓取许可和链接发现拆成两件事来讲,说明 Disallow 与 noindex 的区别、蜘蛛池里常见的几类误配置,以及用服务器日志和站长平台工具逐步验证的方法,帮你判断问题到底卡在哪一层。

常见问题

入口页被 robots.txt 屏蔽后,里面的目标链接还会被搜索蜘蛛发现吗

robots.txt 只做一件事:告诉搜索蜘蛛哪些 URL 不要来抓。它不负责让内容出现,也不负责让内容消失。理解这一点,很多关于入口页的困惑就解开了。

抓取许可和链接发现是两码事

链接被发现,通常来自三个渠道:别的页面上的超链接、sitemap、以及外部站点的指向。入口页里的目标链接属于第一种,前提是搜索蜘蛛真的抓取了这个入口页,拿到了 HTML 源码,才能从中解析出链接地址。

如果 robots.txt 把入口页本身屏蔽了,蜘蛛一般不会去请求这个 URL,自然也读不到里面的链接。这时候“入口页里放了哪些链接”对蜘蛛来说是看不到的。

屏蔽入口页之后,通常会发生什么

  • 入口页 URL 依然可能被蜘蛛“知道”(别人链过来、sitemap 里写过),但不会去抓取;
  • 入口页内部的目标链接,不会因为这一次屏蔽而被发现;
  • 如果这批目标 URL 还有别的来源,比如 sitemap、其他可抓取的入口页、外部链接,它们照样可能被抓;
  • 已经被抓取并建立索引的旧页面,不会因为新增一条 Disallow 就立刻从索引里消失。

别把 Disallow 和 noindex 混为一谈

noindex 需要蜘蛛抓到页面才能看到;Disallow 是让蜘蛛压根不要抓。两者一起用,noindex 往往永远生效不了,因为蜘蛛根本没机会读到它。

如果你只是不想让入口页出现在搜索结果里,但仍然希望蜘蛛通过它发现目标链接,通常的做法是“可抓取 + noindex”。一旦改成屏蔽抓取,就同时切断了链接发现的路径。

蜘蛛池里常见的几类误配置

  1. User-agent 分组写错:多组规则堆在一起,蜘蛛可能只匹配到其中一组,实际屏蔽范围比你以为的大。
  2. 通配符用过头:比如写成 /pool*,会顺带把 /pool-a/、/pool-tools/ 这类路径一起挡住。
  3. 入口页禁了,目标链接却在同目录:本想屏蔽入口目录,结果目标链接也在同一路径下被一起挡掉。
  4. 直接写 Disallow: /:一次挡住整站,这是最常见也最伤的写法。
  5. 测试环境写过 Disallow,上线忘了删:线上长期保持屏蔽状态,自己却以为一直没动过。

怎么确认到底卡在哪一层

  • 看服务器日志:有没有对入口页 URL 的抓取请求,来自哪些 UA,返回码是什么;
  • 用搜索引擎站长平台提供的 robots.txt 测试工具,确认某条具体 URL 是否被屏蔽;
  • 把 robots.txt 原文打开,逐条核对大小写、结尾有没有 $、是否有多余空格;
  • 对入口页 URL 做一次抓取测试,看返回的是页面内容还是被拒。

实际建议

想让入口页承担链接分发的角色,就让它保持可抓取。担心入口页本身占索引,可以给它 noindex,但不要屏蔽抓取。反过来,如果你已经不打算让蜘蛛走这个入口,就把它当普通页面处理,别指望里面的链接还能被顺带发现——目标 URL 的发现工作要交给 sitemap 或别的可达页面。

最后提醒一句,以上都是概率层面的判断,最终以实际日志和索引情况为准,任何配置都无法保证一定被抓取或一定被收录。