常见问题

蜘蛛池入口页的 robots.txt 怎么写,哪些写法会挡住搜索蜘蛛

入口页长期没有抓取记录,问题常常出在 robots.txt。本文梳理全站 Disallow、屏蔽目录、User-agent 分组放行、Crawl-delay 等常见写法带来的影响,说明被屏蔽页面里的链接为什么不会被提取,并给出一份可以逐条执行的检查清单。

常见问题

蜘蛛池入口页的 robots.txt 怎么写,哪些写法会挡住搜索蜘蛛

robots.txt 管的是能不能抓,不是抓了会不会收录

搭入口页时,很多人只关心链接怎么写、一页挂多少条,却忽略了站点根目录下的 robots.txt。它不决定收录,但它决定搜索蜘蛛能不能进入入口页。进不去,页面里的目标 URL 自然也不会被顺着发现。所以在排查“入口页没起作用”这类问题时,robots.txt 应该排在比较靠前的位置。

几种常见写法会带来什么后果

Disallow: /

这是最彻底的一种。入口页本身不会被抓取,页面内的链接也不会被提取,入口页等于完全没有作用。有些站点为了临时避开某些页面的抓取加了这条规则,后来忘了删,日志里就会长期看不到蜘蛛访问。

只屏蔽某个目录

如果入口页放在 /pool/ 这类目录下,而规则写成了 Disallow: /pool/,在这个目录范围内,效果和全站屏蔽是一样的。检查时要把规则和入口页的实际路径逐条对上,尤其是批量生成入口页时,路径结构经常会发生变化。

用 User-agent 做针对性放行

针对特定蜘蛛放行、对其它 UA 屏蔽,理论上可行,但维护成本不低。蜘蛛 UA 会调整,规则里的 UA 串一旦写错,比如大小写不一致或者少了关键子串,放行就会失效。除非有明确需求,一般不建议把入口页的抓取完全押在这种精细规则上。

Crawl-delay

Crawl-delay 是建议值而不是强制值。部分搜索引擎会参考,部分直接忽略。入口页数量多的时候,写一个很大的 Crawl-delay 只会让发现节奏更慢,并不会换来更有效的抓取。

robots.txt 自身返回异常时的后果

  • 返回 200:按文件内容执行规则。
  • 返回 404:通常被视为没有限制,蜘蛛可以正常抓取。
  • 返回 500 或 503:蜘蛛往往会采取保守策略,暂时减少甚至暂停对整站的抓取,等服务恢复后再来。

最后一种情况比规则写错更难排查,因为文件内容本身看起来毫无问题,但抓取量会整体下滑。所以除了看规则,也要确认 robots.txt 这个地址本身的响应状态是否正常。

一个容易被忽略的点:被屏蔽的页面,里面的链接不会被提取

有人以为“屏蔽的只是页面本身,链接还是能被看到”。实际流程并不是这样:蜘蛛要先抓取页面,才能解析出其中的链接。被 robots.txt 挡住的页面不会被抓取,也就走不到链接解析这一步,挂在里面的目标 URL 自然不会因此被发现。

判断起来很简单:如果日志里从来没有入口页的抓取记录,先别急着改链接写法,先看 robots.txt 和页面的返回状态。

实操检查清单

  1. 确认入口页所在目录没有被 Disallow 命中,注意前缀匹配和通配符在各引擎中的差异。
  2. 如果使用了 User-agent 分组,检查该分组的 UA 串是否覆盖了目标蜘蛛。
  3. 把 Crawl-delay 设成较小的值,或者直接去掉。
  4. 在 robots.txt 中用 Sitemap 指向站点地图,方便蜘蛛找到入口页列表。
  5. 用搜索引擎官方提供的 robots.txt 测试工具,验证具体 URL 是否被放行。
  6. 改完之后观察一段时间日志,看入口页的抓取次数是否有变化。

不要指望用 robots.txt 做精准调度

robots.txt 本质上是一个粗粒度的开关,各引擎对通配符、最长匹配、UA 分组的处理细节并不完全一致。想让目标 URL 被稳定发现,更可靠的做法是保证入口页可抓取、可解析、响应正常,链接直接写在 HTML 里,而不是靠一份复杂规则去精确指挥蜘蛛。规则越简单,出问题的概率越低。