robots.txt 是每个网站根目录下都应当存在的纯文本文件,它决定了搜索引擎爬虫如何访问你的站点。这个文件写对了,抓取预算会被高效利用,重要页面能更快被收录;写错了,轻则后台被爬虫频繁访问浪费资源,重则整个网站从搜索结果中消失。我梳理了它的核心语法和配置中容易踩的坑,帮助你正确设置这个文件。
这个文件必须放在域名根目录,访问路径固定为 https://你的域名/robots.txt。它的作用是管理爬虫的访问权限,从机制上讲,它只负责告诉爬虫“哪些路径可以抓取”,并不直接决定页面是否被索引。如果你想让某个页面彻底消失在搜索结果中,正确做法是给该页面添加 noindex 标签,单纯依赖 robots.txt 无法实现这个目的。
还需要了解的是,robots.txt 对爬虫而言属于一种“君子协定”。正规搜索引擎的爬虫会严格遵守,但恶意采集脚本和第三方爬虫通常会无视这些规则。因此,涉及用户隐私、支付数据或商业机密的目录,务必叠加登录验证、IP 白名单等强制访问控制,不要把安全防线完全寄托在 robots.txt 上。建议定期打开该文件检查路径拼写,避免因编辑失误暴露敏感目录结构。
robots.txt 文件由若干“规则组”组成,每一组都以 User-agent 字段开头,格式为“字段名: 值”。所有字段名建议使用小写字母,路径值区分大小写,这一点很容易在配置时被忽略。
该字段声明规则对哪个爬虫生效。例如 User-agent: Googlebot 只作用于谷歌爬虫;想要覆盖所有搜索引擎,使用通配符 User-agent: *。文件中可以包含多个规则组,分别针对不同爬虫设置不同权限。需要注意的是,当同一爬虫命中了多个规则组时,主流搜索引擎以最长的 User-agent 匹配作为优先处理原则。
Disallow 声明禁止抓取的路径,Allow 声明允许抓取的路径。一个容易被忽视的细节是:Disallow: 后面留空表示解除所有限制,完全放开抓取。当 Allow 和 Disallow 发生冲突时,路径匹配更长的规则优先级更高。例如同时存在 Disallow: /api/ 和 Allow: /api/public/,那么 /api/public/ 会被放行,其他 /api/ 下的路径仍被屏蔽。
Sitemap 指令用来声明网站地图的完整 URL(必须是绝对地址),通常置于文件末尾,方便爬虫快速获取内容清单。Crawl-delay 用于设定爬虫的抓取间隔时间,但谷歌官方已声明忽略此指令,如果你需要控制谷歌的抓取频率,请到 Google Search Console 后台调整速率设置;其他如 Bing、百度等搜索引擎仍支持此指令,可以酌情保留。
以下列举几个常见需求的推荐写法,按需复制后修改路径即可。
配置完成后,建议通过谷歌的 robots.txt 测试工具或直接访问域名下的 robots.txt 文件进行验证,确认每条规则都符合预期,尤其是路径的斜杠位置,比如 /admin 和 /admin/ 匹配范围完全不同,前者会匹配所有以 admin 开头的路径。
配置 robots.txt 时,以下几个误区最容易导致严重后果。
误区一:用 Disallow 屏蔽页面却未加 noindex。这会浪费爬虫预算,页面可能因无法抓取而长期处于“已发现但未索引”状态,在搜索结果中表现很差。正确做法是:不想收录的页面用 noindex 标签说明。
误区二:把安全敏感信息写进 robots.txt 就以为万事大吉。如前所述,恶意爬虫不遵守协议,此类文件反而相当于泄露目录结构。敏感数据必须靠服务端权限控制,避免使用混淆或模糊路径名。
误区三:通配符使用不当。机器人协议标准不允许 * 出现在路径中作任意匹配(星号仅可作 User-agent 的值),曾有站长误写 Disallow: /*.php$ 导致规则完全失效,建议使用完整路径或目录的格式。
误区四:多个规则组之间的优先级混乱。例如同时定义了针对 Googlebot 的组和针对所有爬虫的组,Googlebot 会命中更具体的组,其余规则不生效,容易造成配置预期与实际的偏差。
最直接的方法是打开浏览器访问 https://你的域名/robots.txt 查看文件内容和响应状态码。谷歌站长平台提供 robots.txt 测试工具,能模拟 Googlebot 抓取指定 URL 并显示是被允许还是被禁止。
新内容通常在几分钟内即可被爬虫重新读取,但全站规则的变更可能需要几天时间才能完全反映在抓取行为上。如果进行了屏蔽操作,已收录的页面不会立即从搜索结果中移除,需要配合 noindex 或 Search Console 的移除工具才会更快。
按照规范,单条路径的最长支持长度约为 2083 个字符,文件总大小没有强制限制,但建议保持精简,超过几十 KB 的文件容易触发爬虫的各种异常,也不利于维护。
配置 robots.txt 时,务必记住三个要点:文件必须存放在根目录,并区分抓取与收录两个概念;Allow 和 Disallow 同时存在时,加长匹配规则优先;无 value 的 Disallow 表示开放全站。建议你配置完成后,先在规则覆盖范围较小的测试站验证效果,再逐步应用到生产环境。同时,建议每个季度复查一次文件内容,确认路径没有因站点重构而失效。