蜘蛛池搭好之后迟迟没动静,排查到最后,问题有时候出在一个几百字节的文本文件上——robots.txt。蜘蛛在抓取入口站之前通常都会先请求这个文件,如果它读到的是全站禁止,那么后面铺的入口页、跳转链、指向目标站的链接,蜘蛛连看都看不到。
robots.txt 在蜘蛛池里管什么
先明确一个边界:robots.txt 管的是能不能抓,不是会不会收录。一个 URL 被抓取了不代表会被索引,被禁止抓取也不等于一定不会出现在结果里(只是正常情况下搜索引擎会遵守)。对蜘蛛池来说,这个文件的作用更偏向路径引导:告诉蜘蛛哪些目录可以进,哪些文件不必浪费配额去碰。
它也不是安全机制。写进 robots.txt 的路径相当于对外公开,不想被看到的内容不应该靠它来藏。
入口站常见的几种配置
全站放行
文件存在但没有实质性的 Disallow 规则,或者只写一条 Allow,这是入口站最省事的写法,适合入口页本身就是给蜘蛛看的情况。
全站禁止
Disallow 全站是入口站最容易犯的致命错误。它常来自测试环境配置忘了改,或者模板里带了默认屏蔽。表现是服务器日志里几乎看不到主流蜘蛛对入口页的请求。
按目录放行
- 只允许入口页所在目录,屏蔽后台、临时目录、参数拼接页;
- 把 sitemap 声明的路径一起放行,否则声明了也读不到;
- 避免用规则去屏蔽带参数的 URL,容易误伤正常页面。
几个高频踩坑点
- 屏蔽 CSS 和 JS:蜘蛛渲染页面时需要这些资源,屏蔽后可能判断页面结构异常。
- 用它代替 noindex:想阻止索引应该用 meta robots 或响应头,不是靠禁止抓取。
- crawl-delay 设得过大:部分蜘蛛支持这个字段,设成几十秒等于主动降低入口页的抓取频率。
- 文件本身返回异常:robots.txt 返回 5xx 时,各蜘蛛的处理策略并不一致,可能暂停抓取,也可能按放行处理,结果不可控。
- 存在多份文件:子域名、不同端口、http 与 https 各有一份,规则互相打架。
- 通配符写错:不同蜘蛛对通配符的支持程度不一样,写错容易连正常路径一起屏蔽。
和 nofollow、meta robots 的分工
这三样经常被混着用,其实作用层面不同:
- robots.txt:控制抓取,属于入口层面;
- meta robots:控制索引与跟随,作用在单个页面上;
- rel=nofollow:控制是否传递权重、是否继续顺着链接走。
蜘蛛池里更常见的失误是链接上加了 nofollow,蜘蛛虽然来了,但不再往下跟,入口页就成了终点站。
实操建议
- 入口站统一放行,屏蔽规则只针对确实不需要蜘蛛访问的目录;
- 把 sitemap 地址写在 robots.txt 里,方便蜘蛛直接找到 URL 清单;
- http 与 https、主域名与子域名分别检查,确认只有一份规则实际生效;
- 改动后观察一段时间的服务器日志,看蜘蛛请求量有没有异常波动。
怎么验证配置真的生效
- 直接访问域名下的 robots.txt,确认返回正常且内容是最新版;
- 用搜索引擎官方提供的测试工具模拟抓取,看目标 URL 是被允许还是被拦截;
- 在日志里筛选主流蜘蛛的 UA,看被屏蔽目录是否还有请求、放行目录是否正常出现。
robots.txt 不决定收录,但它决定蜘蛛能不能走到你家门口。入口站的这个文件,值得在铺链接之前先检查一遍。