做蜘蛛池时,有人会给入口页加一条 robots.txt 规则,想法是「别让搜索引擎抓入口页,只抓目标 URL」。这个思路本身就有点拧巴:入口页和目标 URL 之间靠链接连接,而链接的发现,恰恰依赖搜索蜘蛛把入口页抓下来、解析 HTML。下面把这件事拆开说。
robots.txt 拦住的是抓取,不是索引
robots.txt 是给爬虫看的抓取约定,作用是告诉爬虫哪些路径不要抓。它不像 noindex 那样直接表达「不要收录这个页面」。所以一条 Disallow 生效后,最直接的结果是:该搜索引擎的爬虫不来抓这个入口页。
页面没被抓,HTML 就没被解析,页面里的普通链接自然也不会被顺藤摸瓜地发现。目标 URL 也就失去了这条发现路径。注意,这里说的是「这条路径断了」,而不是「绝对发现不了」。
为什么入口页被禁抓,目标 URL 的发现概率会下降
- 链接发现依赖入口页被抓取:入口页是发现层,抓不下来,发现层就断了。
- sitemap 是另一条路,但和入口页无关:把目标 URL 直接写进 sitemap 提交,走的是提交通道,不依赖入口页被抓。
- 外链同样能带来发现:如果目标 URL 在别处有正常外链,蜘蛛仍可能从那里发现它。
- 但这两条路都不受你控制:你无法用入口页去推动它们,稳定性也不由你决定。
几个容易踩坑的细节
每个搜索引擎读的是自己那份 robots.txt
有的站点只对某个 UA 放开,或者只在某个站长平台里配置,就误以为全局生效。实际是各引擎各读各的,需要逐一对齐来看。
robots.txt 是约定,不是强制
绝大多数主流爬虫会遵守,但这不等于「一定不来」。反过来,遵守了就等于不抓,入口页上的链接也就不会被解析。
别和 noindex 混着用
noindex 是「抓了但别收录」,和「不抓」是两回事。入口页如果只是不想被收录,用 noindex 更合适;如果连抓都不给抓,就别指望它来传递链接。
想保留 robots.txt,又想目标 URL 被看到,可以这样做
- 放开入口页抓取,用 Crawl-delay 或抓取频率限制来控制压力,而不是直接 Disallow。
- 对无价值路径(后台、站内搜索结果页、参数组合页)做 Disallow,入口页本身留在允许范围内。
- 把目标 URL 放进 sitemap,用提交通道做兜底。
- 给目标 URL 建设正常的外链,减少对入口页的单一依赖。
- 如果确实需要隔离,把入口页放到单独的子域或目录,单独配置规则,别一刀切。
怎么验证有没有生效
最直接的是看服务器日志:入口页有没有该引擎的抓取记录,目标 URL 有没有出现。百度搜索资源平台和 Google Search Console 都提供 robots.txt 测试工具,可以模拟某条 URL 是否被允许抓取。测试时别只盯着「是否被屏蔽」,还要看屏蔽之后,入口页上的链接还能不能通过其他路径被发现。
一句提醒:robots.txt 是抓取开关,不是收录开关;用错了方向,往往是把发现路径一起关掉。
最后要说的是,入口页被允许抓取,也不代表目标 URL 一定被收录。抓取、发现、索引是三件事,能做的只是把发现路径打通、把入口页质量做扎实,剩下的交给搜索引擎自己判断。