robots.txt 是站点根目录下一个纯文本文件,用来说明哪些路径允许抓、哪些不允许。文件本身很简单,但在蜘蛛池场景里,入口页数量多、模板统一、常常批量生成,一条写错的规则影响的往往不是一个页面,而是整批页面同时失去被抓取的机会。下面按放行什么、屏蔽什么、容易踩的坑来讲。
一、先分清:它管的是抓取,不是收录
robots.txt 只能告诉蜘蛛这条路不要走,并不能决定 URL 会不会出现在搜索结果里。一个常见误解是:把入口页 Disallow 掉,就等于这批页面干净了。实际上只要 URL 通过外链、历史记录或主动提交被蜘蛛知晓,它仍可能被收录,只是内容读不到,展示出来的往往是空标题或旧摘要。所以动手屏蔽之前先想清楚目的:是不希望蜘蛛在这里浪费抓取配额,还是不希望页面被看到。这两件事的解法并不一样。
二、入口页通常需要放行的部分
- 入口页自身路径:如果希望蜘蛛读到入口页内容并顺着链接继续走,就不要对整个目录做 Disallow。
- CSS、JS 等静态资源:资源被屏蔽后,蜘蛛拿到的渲染结果可能和用户看到的不一致,判断页面质量时容易出偏差。
- Sitemap 所在路径:文件本身不面向用户,但保持可抓取会更省事。
三、这些路径通常值得屏蔽
- 后台、登录、测试目录等不适合被外部访问的路径。
- 站内搜索结果页,以及带大量参数的筛选页,这类 URL 组合几乎可以无限生成。
- 统计脚本、跳转中间页等只服务于点击计数的路径。
- 同一内容的多套 URL 变体,可以先用 Disallow 兜住,长期还是建议用 301 或 canonical 处理。
四、几个高频坑
1. 通配符和结尾符号用错
Disallow 里的路径不带通配符时按前缀匹配,写了 /tmp 会把 /tmpabc 一起拦掉。需要精确到目录时补上结尾斜杠;需要匹配参数或后缀时用 * 和 $,但建议先小范围验证,再全量生效。
2. 多域名、多子域各写各的
robots.txt 按主机名生效,子域不会自动继承主域的规则。入口页分散在多个域名下时,要逐站确认文件存在,不要只在主站放一份。
3. 文件格式出问题
文件开头的 BOM 头、全角冒号、大小写混用,都可能让整段规则被忽略。写完直接拿浏览器打开看一眼,比事后排查要快得多。
4. 把它当成访问控制手段
robots.txt 是约定,不是屏障。真正敏感的内容请用权限校验,别指望一行 Disallow 挡住谁。
五、和 Sitemap 的配合
可以在文件末尾用 Sitemap 字段声明站点地图地址,方便蜘蛛顺带发现。但要注意,如果 robots.txt 本身返回 404、500 或者响应超时,部分蜘蛛可能暂时放缓对该站的抓取,所以这个文件的可用性也该纳入日常监控。反过来,Sitemap 提交是独立通道,不要因为 robots.txt 写错就把它一起停掉。
六、上线前的自查清单
- 直接访问域名下的 robots.txt,确认文件能打开、内容无乱码。
- 检查有没有误写 Disallow: / 这类全站封禁。
- 逐条核对通配符和结尾符号,确认没有误伤入口页目录。
- 确认每个承载入口页的域名都有一份独立文件。
- 改动后隔一段时间看服务器日志,确认蜘蛛对入口页的请求量没有异常下滑。
把 robots.txt 当成入口页体系的一部分来维护,而不是建站时随手放一个默认文件,能省掉不少页面明明在、蜘蛛就是不来的排查时间。