搜索抓取

robots.txt 与抓取路径:屏蔽规则改变了蜘蛛的哪一段路线

robots.txt 本身不产生抓取,却决定蜘蛛能走到哪一步。本文梳理前缀匹配带来的误伤、哪些路径适合交给它屏蔽、渲染资源为什么不能一刀切,以及改完规则后怎样用日志核对蜘蛛的真实抓取路线,避免屏蔽与 noindex 写反。

搜索抓取

robots.txt 与抓取路径:屏蔽规则改变了蜘蛛的哪一段路线

做抓取优化时,大家习惯盯内链和 Sitemap,却很少回头看 robots.txt。它本身不产生抓取,但它决定了蜘蛛能走到哪一步。规则写得含糊,蜘蛛实际走的路线就会和你的预期差出一截。

它管的是抓取,不是索引

robots.txt 里的 Disallow 只表示不要抓这个 URL,不等于这个 URL 不会出现在搜索结果里。如果某个被屏蔽的地址有足够多的站外链接,搜索引擎仍然可能把它保留为一个没有摘要的结果页。想让它彻底不出现,用的是页面级的 noindex,而 noindex 生效的前提恰恰是:这个页面允许被抓取。两者写反,是最常见的组合错误。

Disallow 挡住的是抓取动作,不是 URL 的传播。链接还在,URL 就还在被传递。

前缀匹配:一条规则可能带走一整个目录

多数搜索引擎的 robots.txt 按路径前缀匹配,而不是按完整路径精确匹配。写 /tag 时,/tag、/tag/xxx、/tags 这类路径都可能被一起挡住——原本只想挡聚合页,结果连正文章节页也进不去。写规则前,先把站点里所有以该字符串开头的路径列一遍,再决定要不要加斜杠收窄范围。

适合交给 robots.txt 的路径

  • 站内搜索结果页,参数组合几乎无限,抓取价值低;
  • 排序、筛选、打印、分享等衍生版本;
  • 后台、测试、临时目录等不该被访问的地址;
  • 容量巨大的日历归档、标签聚合页的分页尾部。

这些路径的共同点是:数量大、内容重复、对用户没有独立价值。把抓取预算留给正文,比让蜘蛛在参数组合里打转更划算。

别把渲染需要的资源一起挡掉

如果页面依赖 CSS 和 JS 才能呈现出主要内容与链接,把 /assets、/static 这类目录整段屏蔽,蜘蛛拿到的就是半成品。它看不到渲染后的结构,内链也走不通,抓取路径会在这里断掉。屏蔽规则要具体到文件或目录,而不是为了省事一刀切掉整个静态资源域。

改完规则,用日志看路线

规则上线后,别只看文件有没有写错,要去服务器日志里看蜘蛛的实际访问记录:被挡住的目录是否还有请求,有则说明规则没生效或被忽略;正文页面的抓取量是否上升;原来经过聚合页到达的深层页面有没有失去入口。抓取路径是一条链,挡住中间一环,后面的页面可能再也走不到,必要时给它们补一条内链或放进 Sitemap。

几个容易忽略的细节

  • robots.txt 本身要返回 200,且不要返回 HTML 页面;
  • 路径区分大小写,写法要和实际 URL 一致;
  • 避免多条互相矛盾的规则同时存在;
  • 整站禁止抓取只适合临时下线,长期使用等于放弃自然流量。

robots.txt 是一道闸门,不是优化手段。它负责把不值得抓的东西挡在外面,真正决定蜘蛛能走多远的,仍然是内链结构、Sitemap 和服务器稳定性。开合这道闸门之前,先想清楚你要让蜘蛛看到什么。