蜘蛛池的入口页能不能被抓,很多时候不是内容质量或响应速度的问题,而是第一道门槛就没过:robots.txt。蜘蛛在抓取一个 URL 之前,通常会先请求站点的 robots 文件,读完规则之后才决定这个地址要不要跟下去。入口页放行、内页挡死,或者反过来,都会直接改变蜘蛛在池子里的爬行路线。这篇把 robots.txt、meta robots 和 X-Robots-Tag 在蜘蛛池场景下的取舍讲清楚。
蜘蛛的第一次请求:robots.txt 决定入口页的准入
池子刚搭好,最容易被忽略的一步就是检查 robots 文件。有些站点从测试环境直接搬过来,配置里还留着 Disallow: /,蜘蛛打开一看就掉头走了,入口页布置得再整齐也不会被访问到。反过来,如果全站一条限制都没有,蜘蛛又可能把后台、搜索结果页、带参数的列表页一起翻一遍,把抓取量消耗在没价值的地方。
robots.txt 的作用范围是“允不允许来抓”,不涉及“抓到之后怎么处理”,这一点必须先分清,后面的组合配置才不会乱。
蜘蛛池里常见的三种配置思路
全站放行
入口页本身就是真实内容站、没有需要隐藏的目录时,直接放行是最简单的做法。文件里留空 Disallow,再写一行 Sitemap 地址即可。这种配置的好处是路径不确定时不会误伤,代价是蜘蛛可能把一些重复参数页也一起抓走。
只放行入口页所在目录
当站点上还挂着用户中心、后台、站内搜索这类不该被索引的路径时,可以用 Allow 和 Disallow 配合,把蜘蛛的注意力集中在入口页以及它指向的目标页上。这里要注意优先级规则:路径更具体、长度更长的规则会覆盖更宽泛的规则,写的时候最好从宽到窄逐条核对一遍。
用通配符过滤参数
入口页如果带 ?page=、?tag=、?from= 这类参数,蜘蛛很容易在同一个模板上无限翻页。像 Disallow: /*?page= 这样的规则能挡住大部分重复路径,但合法分页也可能一起被挡。分页要不要放行,取决于这些页面上有没有值得让蜘蛛跟下去的链接。
meta robots 与 X-Robots-Tag:页级微调
robots.txt 管的是“要不要来抓”,meta robots 管的是“抓到之后怎么处理”。想让蜘蛛抓取页面里的链接但不索引这个页面本身,就得靠 meta robots 里的 noindex,而不是靠 Disallow。
两者混用会出现一个典型问题:被 robots.txt 屏蔽的页面,蜘蛛根本读不到它上面的 noindex,于是这个 URL 有可能长期留在索引里,既没被抓也没有被清掉。
X-Robots-Tag 放在 HTTP 响应头里,适合 PDF、图片这类非 HTML 资源,批量下发比逐页改模板省事。入口站如果混放了多种文件类型,用响应头统一控制会比改页面更稳妥。
三个容易被忽略的坑
- 屏蔽规则写太宽:本想挡住某个子目录,结果写成整站屏蔽,入口页一条链接也传不出去。
- 挡住了自己依赖的跳转路径:入口页到目标页中间要走一次 301,而跳转落在被封目录里,蜘蛛跟到一半就停了。
- 测试和线上共用一份文件:上线时忘了改回来,蜘蛛看到的就是测试期的限制规则。
上线前的检查清单
- 直接用浏览器访问 /robots.txt,确认返回的是正常页面,而不是 404 或跳转。
- 逐条读 Disallow,确认没有把入口页、目标页所在目录一起挡掉。
- 确认 Sitemap 地址指向的是线上域名。
- 在页面源码里搜 meta robots,确认没有误留 noindex。
- 抽查几个入口页在服务器日志里的抓取状态码,确认是正常返回而不是超时或被拒。
和 sitemap、站长平台的分工
robots.txt 决定“允许抓哪些”,sitemap 决定“希望先抓哪些”,站长平台里的抓取测试工具用来验证单条 URL 是否可抓。三者不冲突,但有优先级:robots 的屏蔽永远大于 sitemap 的推荐。
池子规模上来之后,建议把 robots 规则固定成一份版本化的配置,改动时留记录。否则某次随手调整,可能让一批入口页整片关在门外,而从日志上看只是抓取量慢慢变少,很难第一时间定位到原因。
robots.txt 不是可选项,而是蜘蛛池的第一层结构设计。规则写得越清楚,蜘蛛的爬行路线越确定,抓取效率才谈得上稳定。