很多站点的收录问题,最后追到的不是内容质量,而是根目录下那个几百字节的 robots.txt。它被搜索引擎抓取前最先读取,一旦写错,后面所有的栏目规划、内链布局、内容更新都很难被看到。这个文件平时没人动,动一次又容易留下坑,所以值得单独做一次自查。
为什么它比其他配置文件更敏感
robots.txt 的作用是告诉爬虫哪些路径不用抓。它生效快、覆盖面广、出错时没有明显报错提示——服务器照样返回 200,页面照样能访问,只是蜘蛛不再来。更麻烦的是,很多问题不是全站屏蔽,而是某个目录被顺手挡住,比如静态资源目录、搜索页目录、带参数的列表页,表面上看不出异常。
常见的高风险写法
Disallow 范围写得太宽
最典型的是 Disallow: / 留在线上环境。测试阶段为了不让站点被抓,加了全站禁止,上线后忘了删。另一个常见情况是 Disallow: /search 这类前缀写法,本意只挡搜索页,结果把 /search-tips、/searches 一起挡掉。如果只想挡某一层,建议写成带斜杠的明确路径。
屏蔽了 CSS、JS 和图片
为了节省抓取资源,把 /static/、/assets/、*.css、*.js 全挡掉,会让爬虫看到的页面缺少样式与脚本判断依据,移动端适配和渲染类问题都难以被正确评估。图片目录被挡,图片搜索流量也随之消失。除非有明确理由,这类资源一般建议放开。
通配符和 Allow 顺序用混
不同的爬虫对通配符支持程度不完全一致,* 和 $ 用得越多,行为越难预测。同时 Allow 与 Disallow 同时存在时,规则匹配的优先级容易被误判。稳妥做法是:能用明确路径就别用通配符,规则条目保持精简,改完一定用抓取测试工具验证一遍。
Sitemap 指向失效地址
文件末尾的 Sitemap 声明指向了旧域名、测试域名或已经下线的目录,等于给爬虫指了一条死路。改版、换域名、目录迁移之后,这一行要跟着更新。
一次可执行的自查流程
- 用浏览器直接访问 /robots.txt,确认返回 200 且内容是最新版本,不是缓存里的旧文件。
- 逐条读规则,问一句“这条挡的是谁”,把每条规则对应的真实目录在站点上打开验证。
- 检查是否存在全站 Disallow、屏蔽静态资源、屏蔽整站图片目录的情况。
- 确认 Sitemap 地址可访问,且里面列出的地址都是希望被发现的正式地址。
- 用搜索引擎官方提供的抓取测试工具或日志观察,确认目标页面能被正常抓取。
- 把这次确认的结果记录到运维文档里,注明修改时间和修改人。
用抓取记录做二次验证
规则改完之后,光看文件本身不够。翻一翻近期的访问日志,看看目标栏目的抓取请求是否恢复、静态资源是否重新出现、是否还有大量请求打在已经被屏蔽的路径上。如果日志里长时间没有某个目录的抓取记录,而该目录又不在禁止列表里,问题可能出在别处,比如入口太深或者内部链接太少。
robots.txt 是抓取入口的开关,不是提升收录的工具。它只负责“让不让来”,不负责“来不来、收了不收”。把它当成限制条件的清单来维护,比当成优化手段更合适。
和 URL 发现的关系
站点做蜘蛛池、做 URL 主动提交、做内链铺设,前提都是爬虫愿意进这个门。入口被封住,后面所有动作都只是自娱自乐。反过来说,规则写得太松、把大量无意义的筛选参数页和重复列表页全部放开,也会稀释抓取资源的分配。合理的做法是:正式内容页全部放开,纯参数组合页、站内搜索结果页、后台与测试目录明确挡掉,并在 Sitemap 里只列正式地址。
落地检查清单
- 线上 robots.txt 中没有全站 Disallow
- 关键栏目、文章、商品目录均未被误挡
- CSS、JS、图片目录按需放开
- 测试域名、内测目录、后台路径已屏蔽
- Sitemap 地址可访问且与实际域名一致
- 规则条目精简,通配符使用有明确理由
- 修改后做过抓取测试并留存记录
- 日志中目标目录的抓取请求处于正常水平
这个文件平时不需要频繁改动,但每隔一段时间,或者在做改版、迁移、栏目调整之后,都值得重新看一遍。它体量很小,出问题的代价却常常很大,属于投入产出比很高的一项例行自查。