站点运营

站点运营:robots.txt 与抓取规则自查,别让一行 Disallow 挡住整站入口

robots.txt 是搜索引擎抓取前会读取的第一道规则文件,写错一行就可能挡住整站或关键栏目。本文梳理常见的宽泛 Disallow、通配符误用、屏蔽 CSS/JS、Sitemap 指向失效等问题,给出一套可执行的检查流程和落地清单,帮助站点把抓取入口理清楚。

站点运营

站点运营:robots.txt 与抓取规则自查,别让一行 Disallow 挡住整站入口

很多站点的收录问题,最后追到的不是内容质量,而是根目录下那个几百字节的 robots.txt。它被搜索引擎抓取前最先读取,一旦写错,后面所有的栏目规划、内链布局、内容更新都很难被看到。这个文件平时没人动,动一次又容易留下坑,所以值得单独做一次自查。

为什么它比其他配置文件更敏感

robots.txt 的作用是告诉爬虫哪些路径不用抓。它生效快、覆盖面广、出错时没有明显报错提示——服务器照样返回 200,页面照样能访问,只是蜘蛛不再来。更麻烦的是,很多问题不是全站屏蔽,而是某个目录被顺手挡住,比如静态资源目录、搜索页目录、带参数的列表页,表面上看不出异常。

常见的高风险写法

Disallow 范围写得太宽

最典型的是 Disallow: / 留在线上环境。测试阶段为了不让站点被抓,加了全站禁止,上线后忘了删。另一个常见情况是 Disallow: /search 这类前缀写法,本意只挡搜索页,结果把 /search-tips、/searches 一起挡掉。如果只想挡某一层,建议写成带斜杠的明确路径。

屏蔽了 CSS、JS 和图片

为了节省抓取资源,把 /static/、/assets/、*.css、*.js 全挡掉,会让爬虫看到的页面缺少样式与脚本判断依据,移动端适配和渲染类问题都难以被正确评估。图片目录被挡,图片搜索流量也随之消失。除非有明确理由,这类资源一般建议放开。

通配符和 Allow 顺序用混

不同的爬虫对通配符支持程度不完全一致,* 和 $ 用得越多,行为越难预测。同时 Allow 与 Disallow 同时存在时,规则匹配的优先级容易被误判。稳妥做法是:能用明确路径就别用通配符,规则条目保持精简,改完一定用抓取测试工具验证一遍。

Sitemap 指向失效地址

文件末尾的 Sitemap 声明指向了旧域名、测试域名或已经下线的目录,等于给爬虫指了一条死路。改版、换域名、目录迁移之后,这一行要跟着更新。

一次可执行的自查流程

  1. 用浏览器直接访问 /robots.txt,确认返回 200 且内容是最新版本,不是缓存里的旧文件。
  2. 逐条读规则,问一句“这条挡的是谁”,把每条规则对应的真实目录在站点上打开验证。
  3. 检查是否存在全站 Disallow、屏蔽静态资源、屏蔽整站图片目录的情况。
  4. 确认 Sitemap 地址可访问,且里面列出的地址都是希望被发现的正式地址。
  5. 用搜索引擎官方提供的抓取测试工具或日志观察,确认目标页面能被正常抓取。
  6. 把这次确认的结果记录到运维文档里,注明修改时间和修改人。

用抓取记录做二次验证

规则改完之后,光看文件本身不够。翻一翻近期的访问日志,看看目标栏目的抓取请求是否恢复、静态资源是否重新出现、是否还有大量请求打在已经被屏蔽的路径上。如果日志里长时间没有某个目录的抓取记录,而该目录又不在禁止列表里,问题可能出在别处,比如入口太深或者内部链接太少。

robots.txt 是抓取入口的开关,不是提升收录的工具。它只负责“让不让来”,不负责“来不来、收了不收”。把它当成限制条件的清单来维护,比当成优化手段更合适。

和 URL 发现的关系

站点做蜘蛛池、做 URL 主动提交、做内链铺设,前提都是爬虫愿意进这个门。入口被封住,后面所有动作都只是自娱自乐。反过来说,规则写得太松、把大量无意义的筛选参数页和重复列表页全部放开,也会稀释抓取资源的分配。合理的做法是:正式内容页全部放开,纯参数组合页、站内搜索结果页、后台与测试目录明确挡掉,并在 Sitemap 里只列正式地址。

落地检查清单

  • 线上 robots.txt 中没有全站 Disallow
  • 关键栏目、文章、商品目录均未被误挡
  • CSS、JS、图片目录按需放开
  • 测试域名、内测目录、后台路径已屏蔽
  • Sitemap 地址可访问且与实际域名一致
  • 规则条目精简,通配符使用有明确理由
  • 修改后做过抓取测试并留存记录
  • 日志中目标目录的抓取请求处于正常水平

这个文件平时不需要频繁改动,但每隔一段时间,或者在做改版、迁移、栏目调整之后,都值得重新看一遍。它体量很小,出问题的代价却常常很大,属于投入产出比很高的一项例行自查。