搭蜘蛛池的时候,大多数人把精力放在入口页数量、IP 分布、链接深度上,却很少回头看一眼 robots.txt。这个文件只有几十个字节,位置固定在站点根目录,一旦写错,前面做的铺垫可能全部作废——蜘蛛连门都进不来,后面的事就无从谈起。
先理清 robots.txt 能做什么
robots.txt 是给爬虫看的排除规则,不是收录开关,也不是权重信号。它只能表达“哪些路径不希望被爬”,既不能强制蜘蛛来抓,也不能让蜘蛛更频繁地来。把它当成投放工具,是最常见的误解。
蜘蛛池入口页的基本诉求是能被发现、能被抓取,所以这里的原则通常是尽量少限制,而不是层层设卡。
六类容易踩的配置问题
1. 全站 Disallow
测试环境随手写下 Disallow: /,上线后忘了删,是最高频的事故。蜘蛛请求一次就会离开,而且短时间内不会再来确认。排查时先直接访问 /robots.txt,看是否返回 200 且带有屏蔽规则。
2. Crawl-delay 数值过大
Crawl-delay 只是给爬虫的建议值,但部分爬虫会遵守。设成 10 甚至 60,等于告诉蜘蛛“慢点来”。在入口页数量多、抓取窗口有限的情况下,能被抓到的页面会明显减少。服务器没有压力时,这个字段通常可以直接删掉。
3. 通配符与路径写法出错
Disallow: /tmp 会连 /templates、/tmp-page 一起挡掉;Disallow: /*? 在不同爬虫的实现里匹配范围也可能比预期大。写得越宽,误伤越多。改完后要用搜索引擎提供的 robots 测试工具,或者本地模拟抓取,确认实际匹配结果。
4. Sitemap 地址写错或漏写
Sitemap 行本身不决定抓取,但它是发现入口页的一条低成本路径。地址写错、协议不对、sitemap 本身返回 404,都会让这条路径失效。写完顺手点开验证一次,花不了多少时间。
5. meta robots 遗留在模板里
比 robots.txt 更隐蔽的是页面里的 meta robots,以及 HTTP 响应头里的 X-Robots-Tag。模板从别处拷来时带着 noindex, nofollow,或者 CDN、反向代理层加了统一的响应头,页面肉眼看得见,蜘蛛却把它排除。这两个地方都要查,不能只看 HTML 源码。
6. 跳转链路上出现 noindex
入口页做 301 跳到目标页,如果目标页带着 noindex,蜘蛛跟过去等于白跑一趟。跳转链上的每一跳,都值得检查响应头和页面头部。
一份可以照着走的自查清单
- 直接访问根目录 /robots.txt,确认状态码是 200,不是 404 或 403;
- 通读规则,确认没有 Disallow: / 这类全站屏蔽;
- 逐个核对 Disallow 路径,避免前缀误伤;
- 检查 Crawl-delay,没有明确需要就删除;
- 确认 Sitemap 地址可访问且内容有效;
- 随机抽几个入口页,查看源代码里的 meta robots;
- 用 curl -I 或抓包工具看响应头里有没有 X-Robots-Tag;
- 翻访问日志,看蜘蛛是否请求过 /robots.txt,以及返回码是什么。
发现问题后怎么改
修改不要一次性全动。先解决明确报错的项,比如全站屏蔽、sitemap 404;再处理影响范围不好判断的项,比如通配符和 Crawl-delay。每改一次,隔几天看日志里蜘蛛对入口页的请求量有没有变化,再决定下一步。
robots.txt 只能“少挡”,不能“多引”。真正影响蜘蛛是否来访的,还是入口页本身的可访问性、内容质量和外链线索。
最后提醒一句:不同搜索引擎对 robots.txt 的解析细节并不完全一致,对通配符和 Crawl-delay 的支持程度也有差别。规则写得简单直接,往往比写得精巧更不容易出问题。