搜索抓取

robots.txt 与蜘蛛抓取:入口处的规则怎么写才不挡路

robots.txt 是蜘蛛进站前读取的规则文件,写错会直接改变抓取路径。本文梳理常见误屏蔽、值得保留的配置,以及它和内链、Sitemap 的配合方式,并给出改完后的验证步骤,帮助站点减少不必要的抓取断点。

搜索抓取

robots.txt 与蜘蛛抓取:入口处的规则怎么写才不挡路

robots.txt 是蜘蛛进站前会请求的一个文件,它不决定页面是否被索引,但会直接影响蜘蛛能不能走到某些 URL。很多抓取问题不是服务器慢,也不是内链少,而是入口处的规则把该走的路封掉了。

蜘蛛读 robots.txt 的顺序

蜘蛛抓取一个站点时,通常会先请求根目录下的 robots.txt,再根据里面的 Disallow 和 Allow 规则判断哪些路径可以抓。它读的是路径前缀,不是页面内容。也就是说,一条 Disallow 写下去,蜘蛛不会先去判断这个页面有没有价值,而是直接跳过。

如果 robots.txt 返回 5xx,蜘蛛可能暂时停止抓取;返回 404,则通常视为没有限制。服务器稳定性在这里同样重要,一个不稳定的 robots.txt 会让抓取节奏变得不确定。

常见误屏蔽:把不该挡的挡了

屏蔽 CSS 和 JS

有些站点为了省抓取,会在 robots.txt 里屏蔽 /css/、/js/ 目录。蜘蛛虽然不一定会渲染所有资源,但屏蔽后,它更难判断页面结构和移动适配。如果希望蜘蛛理解页面,至少不要把这些基础资源一刀切。

屏蔽分页和筛选参数

分页路径是蜘蛛向内走的重要通道。把 /page/ 或带 page 参数的 URL 全部屏蔽,蜘蛛可能只能看到列表第一页,后面的内容缺少入口。筛选参数可以按情况处理,但分页最好保留可抓路径。

Disallow: / 的误用

测试站或改版期间用 Disallow: / 挡住全站,上线后忘记删除,是常见的抓取断点。蜘蛛再来时仍然读到旧规则,就不会继续抓。上线前要确认这条规则已经移除或改成只挡测试目录。

robots.txt 里值得保留的内容

  • 声明 Sitemap 地址,帮助蜘蛛发现站点地图;
  • 只屏蔽确实不需要抓取的目录,比如后台、购物车、临时文件;
  • 如果站点有多个子域或目录,分别写清楚路径,不要用一条规则覆盖全部;
  • 规则尽量简单,避免大量 Allow 和 Disallow 互相覆盖,增加判断成本。
robots.txt 管的是“能不能抓”,不是“能不能收录”。屏蔽一个 URL,不代表它会从索引里消失;反过来,放开抓取也不等于一定被收录。

和内链、Sitemap 的关系

robots.txt 决定蜘蛛能不能走,内链和 Sitemap 决定蜘蛛有没有路可走。三者要一起看:Sitemap 里列出的 URL 如果被 robots.txt 屏蔽,蜘蛛读到地图也不会去抓;内链指向的页面如果被屏蔽,链接再多也到不了。

所以调整 robots.txt 时,最好同步检查 Sitemap 和主要导航。把该开放的正文路径、分页路径、资源路径列出来,确认没有误伤。

改完之后怎么验证

  1. 用搜索引擎提供的 robots.txt 测试工具,输入几个关键 URL,看是否被允许;
  2. 在服务器日志里观察蜘蛛对 robots.txt 的请求状态,确认返回 200;
  3. 抽查被屏蔽目录,确认里面没有需要被抓取的正文页;
  4. 上线后隔几天再看抓取日志,确认蜘蛛确实进入了之前被挡住的路径。

robots.txt 是抓取路径上的第一道门。把它写清楚,比事后反复提交 URL 更省事。不要把它当成收录开关,它只负责让蜘蛛知道哪些路可以走。