蜘蛛池知识

蜘蛛池的 robots.txt 配置:站点级放行与常见误封

robots.txt 是蜘蛛抓取任何入口页前通常最先读取的文件,配错的影响往往比页面级标签更大。本文梳理它的作用范围、基本语法,以及在蜘蛛池场景下最常见的误封写法,并说明它与 meta robots 的分工和上线前后的验证方法。

蜘蛛池知识

蜘蛛池的 robots.txt 配置:站点级放行与常见误封

很多人把注意力放在入口页本身的标签和内容上,却忽略了 robots.txt。它是搜索引擎蜘蛛在抓取任何一个 URL 之前,通常最先读取的文件。这个文件配错的代价,往往比页面级的 meta 标签更大:一处通配符写歪,可能整片路径都被挡在门外,而且短时间内不容易察觉。

robots.txt 的作用范围

robots.txt 必须放在域名根目录下,只对同一个协议、同一个域名、同一个端口生效。子域名是独立的一份配置,主站写了规则并不会自动覆盖子域。它的解析遵循协议约定:路径通常区分大小写,User-agent 字段则一般不做大小写区分。

另外,蜘蛛会缓存这个文件。改动之后不会立刻生效,具体多久重新拉取一次,取决于上一次的响应状态和缓存时间设置。想确认改动是否被读到,只能靠日志观察。

基本语法要点

  • User-agent:指定规则对谁生效,用 * 表示所有蜘蛛。
  • Disallow:声明不希望被抓取的路径前缀。
  • Allow:在被 Disallow 覆盖的范围内开一个口子,主流引擎支持,匹配时按更具体的规则优先。
  • Sitemap:填写站点地图的绝对 URL,属于声明性指令。
  • Crawl-delay:只有部分引擎支持,主流引擎已不再依赖它来限速。

通配符和结尾符号的支持程度各家不一,只被部分引擎识别。如果你的规则依赖这些写法,最好用对应平台提供的测试工具先验证一遍。

蜘蛛池场景下的常见误封

  • 把测试环境的 Disallow: / 直接带到线上,整站被拒。
  • 屏蔽了 CSS、JavaScript 目录,导致蜘蛛拿到的是一个结构残缺的页面。
  • 规则写得太宽,把希望被发现的入口页路径一并挡掉。
  • Sitemap 文件本身也在被屏蔽的目录里,声明等于失效。
  • 分段顺序或分组写法出错,某段规则实际没有生效。
  • 为某个蜘蛛单独写规则时,忘了其他蜘蛛的段落。

与 meta robots 的分工

两者解决的不是同一个问题。robots.txt 表达的是「不要来抓」,meta robots 表达的是「抓到了也不要索引」。被 Disallow 的页面,蜘蛛拿不到正文,自然也就看不到页面里的 noindex,所以它无法互相替代。

如果目的是让一个页面从索引中消失,更稳妥的做法是允许抓取、在页面里写 noindex,而不是直接在 robots.txt 里封死路径。

配置前后的建议清单

  1. 上线前直接请求一次根目录下的 robots.txt,核对实际返回内容。
  2. 改动后用站长平台的抓取测试工具验证几个关键路径。
  3. 只保留必要的规则,避免把历史遗留条目一直带着。
  4. Sitemap 使用绝对 URL,并确认文件本身可以被正常访问。
  5. 记录每次变更时间,方便和后续的日志数据对照。
  6. 有多个子域或独立目录时,逐份确认规则归属,不要想当然。

改动之后怎么观察

规则调整后,蜘蛛的行为不会立刻变化。可以从访问日志里筛出对 robots.txt 的请求记录,看它多久重新拉取一次;再对比入口页请求数在改动前后几天的走势,判断是否出现了明显下滑。如果入口页请求量突然归零,而服务器本身正常,优先回头检查这个文件。把它当成一次常规配置变更来对待,改动、验证、观察三步走,比事后排查要省力得多。