网站与搜索引擎爬虫之间的沟通,很大程度上依赖一份条理清晰的 robots.txt 文件。这份文件相当于站点对外发布的访问守则,它指引着 Googlebot、Baiduspider 等各类爬虫,哪些内容可以尽情抓取,哪些角落必须止步。合理运用它,既能守护后台数据的安全,也能减轻服务器的无效负载,更能让有限的抓取配额聚焦于关键页面。对任何站点运营者而言,熟悉并驾驭这套规则,都是基础功。
robots.txt 的存放位置有严格要求,它必须位于网站的根目录下。以 www.example.com 为例,爬虫会优先访问 https://www.example.com/robots.txt 来获取这些规则。文件内部结构由若干指令块构成,每一块都以特定的指令词开头。
一个向所有爬虫开放全站并提交地图的简单示例便是如此:
User-agent: * Disallow: Sitemap: https://www.example.com/sitemap.xml在书写时务必注意:每个指令必须独占一行,冒号后面紧跟一个空格,且行末不能有额外的空格或字符,否则规则很可能无法正常解析。
网站的运营目的千差万别,封禁与放行的逻辑自然要随之调整。下面列举几种常见场景的写法,可以直接参照使用。
当网站处于开发测试阶段,或正在进行重大改版时,通常不希望任何页面被搜索引擎收录。此时只需两行配置:
User-agent: * Disallow: /这一指令会阻止所有爬虫访问站内一切路径,比逐目录屏蔽要高效、可靠得多,能有效避免测试页面提前暴露在搜索结果中。
大多数网站只需要隔离部分敏感区域,比如管理后台或者用户中心。如果想禁止爬虫访问 /admin/ 和 /user-panel/ 这两个目录,可以这样写:
User-agent: * Disallow: /admin/ Disallow: /user-panel/ Allow: /这里需要注意,Allow: / 必须放在所有 Disallow 行之后才能生效,它表示在排除上述路径之外,其余路径均开放。假如你担心目标爬虫不支持 Allow 指令,最稳妥的办法是只保留 Disallow 行,不加 Allow 行,因为未明确禁止的目录默认就是可访问的。
对于流量较大的站点,往往需要对不同爬虫采取差异化策略。比如,希望所有爬虫都能访问站点图片,但对于特定搜索引擎,则不允许其抓取站内搜索页面:
User-agent: * Disallow: Allow: /images/ User-agent: SomeSearchBot Disallow: /search将 User-agent 分行书写,后接各自的规则列表,可以实现这种细致的权限划分。不同爬虫之间互不干扰,管理起来一目了然。
现代搜索引擎倾向于支持通配符,这为规则书写带来了更大的灵活性。星号(*)可以匹配任意长度的字符,美元符号($)则用于匹配路径的结尾。
在规则优先级上,Google 的爬虫遵循一条基本原则:在同一个 User-agent 组内,匹配长度更长的规则胜出。例如,Disallow: /docs 和 Allow: /docs/public 同时存在时,后者的路径更长,因此 /docs 下的 private 目录会被禁止,而 public 目录则会被放行。理解这一机制,有助于在配置不冲突的情况下实现精细控制。
许多站点在配置 robots.txt 时容易掉入几个常见的坑,了解并规避它们,可以避免不必要的收录问题。
举例来说,如果一个 PDF 文件链接被外部站点大量引用,而你的 robots.txt 又禁止了 PDF 抓取,那么访问者点击外链时可能看到 403 错误。这种情况下,并不适合用 robots.txt 来封禁,而应思考如何优化该文件的加载体验。
有的。文件总大小建议控制在 500 KB 以内,且内容行数不宜过多。Google 等搜索引擎可能会在抓取到较大文件时截断解析,导致部分规则失效。建议定期审查文件内容,删除过时或无效的条目,保持精简。
生效时间并不固定。搜索引擎会周期性地重新抓取该文件,时间从几小时到几天不等。如果是紧急屏蔽某些敏感内容,建议同时通过搜索引擎的站长工具提交抓取请求,以加快速度,而非仅依赖 robots.txt 的更新。
会。robots.txt 的路径匹配是区分大小写的。例如,Disallow: /Admin 不会屏蔽 /admin 目录下的内容。在书写规则时,务必与服务器上实际的文件目录大小写保持一致,否则预期中的屏蔽效果会完全失效。
robots.txt 是一把双刃剑,用得好能为网站 SEO 增添助力,用得差则可能误伤重要页面的收录。建议从基础语法入手,先明确网站当前的抓取需求,再按部就班地以小范围规则进行测试。每次修改后,都可以查看搜索引擎站长工具中的抓取统计,验证规则是否与实际期望相符合,再逐步完善这份站点访问守则。