robots.txt 用于告诉搜索引擎爬虫你的站点哪些区域可访问、哪些区域需要回避。一份配置得当的文件,能保护后台等敏感目录,同时让爬虫把有限的抓取预算集中在优质内容上;但如果配置失误,可能造成页面收录不全,甚至导致整站无法被抓取。要掌握它的正确设置方式,需要从文件结构、指令语法和常见误区几个方面入手。
robots.txt 的文件名必须使用小写字母,并置于网站根目录下。文件中可以包含多条记录,记录之间以空行分隔。每条记录由若干指令行组成,指令的格式为“字段名:值”,例如 Disallow: /private/。字段名对大小写不敏感,但路径值通常区分大小写。以 # 开头的部分为注释,可独立成行或跟在指令后,用于补充说明。
从逻辑上看,每条记录先声明 User-agent 以指定适用的爬虫,随后列出对应的 Disallow 或 Allow 规则。一个 User-agent 声明后可以跟随多条不同指令,也可以同时包含禁止和允许两类规则。需要注意的是,虽然主流搜索引擎都支持用 Allow 来覆盖更具体的 Disallow,但不同爬虫对优先级的具体解释存在细微差别,在多搜索引擎环境下需要谨慎处理。
最常见的需求是禁止所有爬虫抓取整个站点,写法如下:
User-agent: *
Disallow: /
如果只想屏蔽某些特定目录,比如管理后台和缓存目录,则可以这样设置:
User-agent: *
Disallow: /admin/
Disallow: /cache/
这里有一个容易出错的地方:目录结尾的斜杠是否保留会影响匹配范围。使用 /admin/ 只会匹配 admin 目录及其子路径;如果去掉斜杠写成 /admin,则会匹配所有以 admin 开头的路径,例如 /administer 或 /admin-panel,很可能误伤不应该屏蔽的页面。
当你需要屏蔽整个目录、却单独保留其中一个子路径时,可以组合使用 Allow 与 Disallow。举例来说,希望爬虫只访问博客下的某个系列专题,而其他博客内容全部屏蔽,可以这样配置:
User-agent: *
Disallow: /blog/
Allow: /blog/featured/
这种场景下的匹配优先级遵循一个大致原则:如果两条规则匹配的路径长度相同,那么 Allow 规则优先于 Disallow;如果路径长度不同,则以更具体(即路径更长)的规则为准。按照这一逻辑,上述写法可以确保 /blog/featured/ 下的内容能够被正常抓取。
你可以针对不同搜索引擎的爬虫设置差异化的访问策略。例如,对 Google 完全开放抓取,而对百度暂时关闭,可以写成:
User-agent: Baiduspider
Disallow: /
User-agent: Googlebot
Disallow:
上例中,Disallow 后面留空代表允许该爬虫访问全部内容。此外还要留意,Sitemap 指令不属于任何 User-agent 记录,通常建议放在文件末尾单独声明,这样可以让爬虫更轻松地定位到站点地图。
很多站长在配置时容易出现一些共性问题,了解这些可以帮助你避免踩坑。
另外,建议在文件修改后不要立刻依赖线上验证工具,因为各搜索引擎的抓取和缓存机制不同,规则生效可能需要数小时到数天。你可以在修改后,通过搜索引擎站长平台提供的 robots 测试工具来进行模拟验证,确认规则是否符合预期。
关于规则的匹配顺序,很多人的理解存在偏差。实际上,robots.txt 的解析并不是按照文件中的先后顺序来执行的,而是根据匹配路径的长度来决定。爬虫会对照当前 URL 与文件中的所有规则,找出最匹配的那一条。
具体来说,当多个规则都能匹配同一个 URL 时,会优先选择路径最长的规则;如果路径长度相同,则 Allow 规则优先于 Disallow。遵循这一原则,你可以通过精心设计路径长度来确保某些页面被放行,而不必担心指令的书写顺序带来干扰。但要注意,这是主流搜索引擎普遍采用的做法,并非官方统一标准,在面向特定搜索引擎时,最好查阅其官方文档确认。
判断规则是否正确的一种实用办法是:梳理出站点中最重要的几个路径(比如首页、核心栏目页、后台地址),然后在心中模拟一遍爬虫的匹配流程,看看最终结果是否符合预期。如果出现规则冲突且无法确定结果,可以调整路径写法让规则更具体,从而减少歧义。
Disallow 留空表示允许对应的爬虫抓取全部内容,等同于没有设置任何限制。如果完全省略这一行,含义也是类似的,但前提是 User-agent 记录下没有其他 Disallow 规则。为了保持表达清晰,建议在需要完全放行时,显式写成 Disallow: 留空,而不是靠省略来表达。
生效时间并没有固定数值。爬虫可能每隔一段时间重新抓取该文件,短则几小时,长则一周,具体取决于抓取频率。你可以使用搜索引擎站长工具中的抓取测试功能来加快验证,也可以主动提交更新请求,但最稳妥的做法是耐心等待并持续观察日志中的抓取记录。
写错规则本身通常不会招致惩罚,但可能导致页面未被收录或抓取异常,从而间接影响站点在搜索结果中的表现。更常见的风险是误屏蔽了正常页面,等发现时已经造成收录下降。只要你及时修正规则,并在站长平台提交重新抓取请求,大多数情况下站点可以逐步恢复。
配置 robots.txt 并非难事,但细节决定成败。建议你在动手修改前,先梳理出站点的目录结构和希望被抓取的内容清单,再对照本文件中的语法要点逐条设置。完成之后,使用官方提供的测试工具验证每个关键路径的匹配结果,最后再上线。日常维护中,也要定期检查爬虫访问日志,观察是否有异常的抓取行为,及时发现规则设置中的潜在问题。