robots.txt配置全解:语法要点与常见配置陷阱

📍 WDQWDWQD987AAAAA:216.73.216.212
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /1943f3c4d87f.html
📄

robots.txt 是网站根目录下一个用于规范搜索引擎爬虫行为的纯文本文件,通过简单的指令告知爬虫哪些资源可以抓取,哪些路径应当绕过。这份文件看似简单,却直接影响收录效率与数据安全:一处路径写错,可能让重要页面长时间不被索引,也可能泄露后台或临时目录。掌握正确的写法与排查思路,是每个站点维护者的基本功。

1. 规则块的核心构造与易混淆点

robots.txt 的基本单元是规则块,每个块的第一行必须是 User-agent,用于指定该规则对哪个爬虫生效;紧随其后的 Disallow 或 Allow 则用来声明具体的路径限制。下面是最常见的写法:

User-agent: *
Disallow: /admin/

它的含义是所有搜索引擎都不得访问 /admin/ 目录。实际书写时有几个细节需要特别留意:第一,Disallow 后面接的是相对路径,而不是带域名的完整链接,写成"Disallow: https://域名/admin"不会被识别;第二,路径是区分大小写的,/Admin/ 和 /admin/ 属于两个不同的地址,配置前务必确认目标路径的真实大小写。

此外,一行指令对应一条规则,不能在同一行里混写多个路径。如果需要限制多个目录,应当依次分行列明,每行独立声明一条 Disallow。

2. 常见配置场景的写法与验证

根据网站所处的不同阶段,robots.txt 的内容也会有所差异。下面几种场景几乎覆盖了绝大多数日常需求。

2.1 关闭整站抓取与恢复抓取的区别

网站处于改版或调试阶段时,往往需要禁止所有爬虫进入,通常写成:

User-agent: *
Disallow: /

这里的斜杠表示站点根目录,意思是全文禁止抓取。与之相反,当文件写成 Disallow:(冒号后为空)时,含义则完全反过来,表示全站开放。两个写法之间的差别仅在一个斜杠,但效果截然不同。改完文件后,建议在搜索引擎的抓取测试工具中分别验证这两种写法,确认最终的解析结果符合预期。

2.2 大批量屏蔽时允许个别子路径

当某个目录整体被禁止访问,但其中一部分子目录依然需要被抓取时,单独写一条 Disallow 就不够用了。例如,想屏蔽 /private/ 目录,却允许其中的 /private/demo/ 页面被收录:

User-agent: *
Disallow: /private/
Allow: /private/demo/

搜索引擎在匹配路径时会优先选择最具体、最长的规则,因此这里额外声明的 Allow 行能够覆盖 Disallow 的约束。判断该不该补写 Allow 的方法很简单:凡是需要从禁止范围内单独摘出来的"特例"路径,都必须为其单独添加一条放行指令,否则它会连同父目录一起被屏蔽。

2.3 面向不同爬虫的差异化设置

绝大多数主流爬虫(如 Googlebot、Bingbot)对基础指令的解读是一致的,但部分第三方爬虫可能无法正确识别 Allow 规则。稳妥的做法是先写一个 User-agent: * 的通用兜底块,再对各爬虫单独追加配置。需要提醒的是,同一个爬虫不能有两个或多个规则块,后者会覆盖先前全部配置,导致预期之外的结果。若要调整某一爬虫的策略,直接在原块内修改即可。

另外,指定爬虫的名称必须写全写准,例如 Google 的爬虫要写成 Googlebot,建议在配置前查看该引擎官方公布的爬虫名称,避免因拼写不完整导致规则失效。

3. 文件命名与放置的硬性要求

文件名必须严格为 robots.txt,不能用其他大小写变形或加数字后缀。文件应放置在域名根目录下,即通过 http(s)://你的域名/robots.txt 能直接访问到。以下错误值得注意:放在子目录下,只能对该子目录生效,而无法作用于整站;站内存在多个域名时,每个域名都需要独立放置一份;文件编码建议使用 UTF-8,避免中文路径或注释出现乱码导致解析异常。

4. 修改文件后的检查与常见误判

完成配置后,不急于上线或提交,先做几项基础检查:打开浏览器访问 /robots.txt,确认返回的是文本内容而不是 404 或错误页;核对每条路径与站点实际目录是否一致,包括大小写;接着用搜索引擎提供的 robots.txt 测试工具,输入需要验证的 URL,查看其最终抓取状态是否与预期相符。

这里往往存在一个误区:robots.txt 只能控制爬虫是否抓取,并不能直接决定页面是否被索引。即使某条规则允许抓取,页面最终能否呈现在搜索结果中,还取决于内容质量、内链结构等多个因素。反过来,Disallow 只是阻止抓取,若页面已被其他路径引用,仍可能以摘要形式展现在搜索结果里。想彻底阻止索引,建议同时使用 noindex 标签。

5. 常见问题

5.1 robots.txt 里能否使用通配符或正则表达式?

部分爬虫支持以 * 作为模糊匹配符号,例如"Disallow: /user/*"可用于屏蔽 /user/ 下所有子页面;符号 $ 则用于匹配路径结尾,如"Disallow: /.php$"表示禁止所有以 .php 结尾的地址。需要说明的是,这些通配符并非所有爬虫都支持,若网站主要依赖不识别通配符的小型引擎,建议采用逐条列明路径的方式更稳妥。

5.2 添加 Allow 规则是否意味着一定优先于 Disallow?

对支持该指令的搜索引擎而言,路径长度匹配规则优先于出现顺序,最具体、最长的路径规则会最先生效,因此 Allow 特例可以覆盖更宽泛的 Disallow。但前提是该引擎支持 Allow 指令,部分小众爬虫并不认可这条规则,对于它们,Allow 会被忽略。

5.3 网站更换了域名或改版后,robots.txt 需要重新配置吗?

需要。域名变更后,原根目录下的文件不会自动迁移到新域名,应在新域名的根目录重新放置;若网站结构有大改动,例如删除了目录或调整了页面层级,原有的屏蔽规则有可能误伤新页面,应当重新梳理路径并做一次抓取测试。

6. 结语

robots.txt 的维护重在细节:路径写法、大小写、特殊字符、文件位置,每一样都不可大意。建议在每次改动后,都用测试工具核对一次最终解析结果,必要时可临时设置一个低风险路径做验证。定期检查文件也很关键,确保它没有因误操作而变成全站屏蔽状态。掌握这些要点后,你就能让爬虫按你的意图高效工作,避免收录与安全层面的双重隐患。

图1 图2

nginx