网站robots.txt配置指南 语法细节与常见错误避坑详解

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

robots.txt 是网站根目录下的一个纯文本文件,用来告诉搜索引擎爬虫哪些页面可以访问、哪些页面应当跳过。配置合理的 robots.txt 能让抓取预算更集中地用于重要页面,新内容收录速度也会明显提升;但一个字符或路径写错,可能造成整站页面被错误屏蔽,甚至导致核心内容从搜索结果中消失。这份指南将帮你掌握 robots.txt 的语法规则,并绕开那些最常出现的配置陷阱。

1. 认清职责边界:控制抓取,不决定收录

robots.txt 的规则只作用于搜索引擎的爬虫程序,访问方式是直接在浏览器里输入“域名/robots.txt”。它的作用更像一份地图上的路标,告诉爬虫哪些路可以走,但并不能决定某个页面最终是否进入搜索索引。如果你希望某个页面完全从搜索结果中消失,正确的工具是 noindex 标签,而不是单纯依赖 robots.txt。

举个例子:一个被 robots.txt 禁止抓取的 URL,只要外部有大量链接指向它,搜索引擎依然可能将其收录,只是快照内容可能来源于其他引用它的页面。另外要特别留意,robots.txt 本质上是一种君子协定,主流搜索引擎的蜘蛛会遵守,但恶意采集程序和一些第三方工具完全不理会这份文件。凡是涉及后台管理、用户隐私或交易支付的敏感目录,必须配合 IP 白名单、登录认证或防火墙等硬性保护措施,绝不能把安全希望全部寄托在 robots.txt 上。

2. 语法核心拆解:字段含义与匹配规则

robots.txt 由多个规则组构成,每一组都以 User-agent 行开头。所有字段统一采用“名称: 值”的格式,冒号必须是英文半角,标准写法是冒号后跟一个空格。虽然多数爬虫对格式有一定容忍度,但坚持规范书写可以避免日后出现解析问题。

2.1 User-agent:声明规则适用于谁

这行用来声明当前规则组针对哪类爬虫。如果只想约束谷歌的搜索蜘蛛,就写 User-agent: Googlebot;如果想对全部搜索引擎爬虫生效,使用通配符 User-agent: *。你也可以建立多个规则组,对不同爬虫实施有区别的策略,比如对百度放宽抓取权限,同时对必应设置更严格的限制。

2.2 Allow 与 Disallow:一开一关的权限开关

Disallow 声明禁止访问的路径,Allow 声明允许访问的路径,二者通常配合使用。 一个容易忽略的细节是:当 Disallow 后面不带任何值(即写成 Disallow: 然后直接换行),代表清除全部限制,爬虫可以抓取全站任意内容。当同一 URL 命中多条规则时,搜索引擎默认采用“最长匹配优先”的原则——路径写得越具体,优先级越高。例如同时存在 Disallow: /api/ 和 Allow: /api/public/ 两条规则时,因为后者路径更长、更具体,所以 public 子目录会被正常放行。

2.3 辅助指令:Sitemap 与 Crawl-delay

Sitemap 指令用来声明站点地图的完整 URL,帮助爬虫快速掌握整站结构,通常放在文件末尾。Crawl-delay 指令用于设定爬虫两次抓取之间的间隔秒数。这里要特别提示:谷歌爬虫并不认可 Crawl-delay 指令,要控制谷歌的抓取频率,应登录 Search Console 的后台进行频率设置。

3. 高频踩坑清单:路径、通配符与大小写

最常见的错误出现在路径理解上。robots.txt 中的路径均以根目录为基准,Disallow: /admin 会同时拦截 /admin 及其下所有子路径,而 Disallow: /admin 【正文续接】会精确匹配 /admin 这个字符串本身是否出现。因此,如果只想屏蔽 /admin 这个目录本身而不影响其他含 admin 的路径,务必在末尾加上斜杠写成 Disallow: /admin/。

第二个高频问题集中在通配符使用上。robots.txt 支持 * 和 $ 两个符号,* 代表任意长度的任意字符,$ 代表路径结束。例如 Disallow: /*.pdf$ 可以拦截所有 PDF 文件。但需要注意,并不是所有搜索引擎都完整支持这两个符号,百度和谷歌支持良好,但部分小搜索引擎可能直接忽略含通配符的规则。

第三个易错点是大写字母。robots.txt 的路径匹配对大小写敏感,Disallow: /User 和 Disallow: /user 是完全不同的两条规则。因此配置时务必仔细核对目录名的大小写,必要时同时写出两种写法以确保覆盖。

4. 实用配置示例与验证方法

下面是一个完整的配置示例,供你参考套用:

User-agent: * Disallow: /wp-admin/ Disallow: /cart/ Disallow: /checkout/ Allow: /wp-admin/admin-ajax.php Sitemap: https://www.example.com/sitemap.xml

配置完成后,务必要做验证。第一步,在浏览器中直接访问 域名/robots.txt,检查文件内容是否按预期输出。第二步,使用搜索引擎站长工具中的 robots 测试功能,比如谷歌 Search Console 里的 URL 检查工具,可以模拟指定爬虫抓取某个具体 URL,直观看到是被允许还是被禁止。建议每次修改后都进行这样的验证,避免上线后发现抓取异常。

另外提醒一点:不要轻易使用 Disallow: / 这种全站屏蔽规则,除非你明确知道后果。一旦写入并生效,整站所有页面都会被搜索引擎拒绝抓取,新内容将完全无法入库。如果只是想暂停网站一段时间,更稳妥的方式是使用 HTTP 状态码或搜索引擎后台的暂时下架功能。

5. 常见问题

5.1 问题一:robots.txt 能阻止 Google 收录我的页面吗?

不能完全做到。robots.txt 只是阻止爬虫抓取页面内容,如果该 URL 被其他网站链接,Google 仍可能将其编入索引,只是页面内容显示不完整或显示为“被 robots.txt 屏蔽”。要让页面彻底不被收录,应使用 noindex meta 标签或 HTTP 响应头。

5.2 问题二:Disallow 留空和 Disallow: / 有什么区别?

Disallow 留空表示允许爬虫抓取全站任何内容,相当于没有设置任何拦截规则;而 Disallow: / 表示禁止爬虫访问根路径下的所有页面,是全站屏蔽的意思。两者效果完全相反,使用时务必区分清楚。

5.3 问题三:robots.txt 可以写中文路径或包含空格吗?

不推荐。robots.txt 的路径解析基于 URL 编码规则,中文字符和空格应使用 URL 编码形式表示,例如空格写作 %20,中文按 UTF-8 编码转换。直接写入中文或未编码空格可能导致匹配失败,建议统一使用编码后的完整路径。

6. 总结

robots.txt 的配置逻辑并不复杂,但细节决定成败。建议你在正式修改前,先梳理出全站需要屏蔽的目录清单,确认每个路径的准确写法,特别注意斜杠结尾、大小写和通配符的使用。配置后务必通过浏览器和站长工具双重验证,确保规则按预期生效。最后记住一个原则:robots.txt 的功能是管理抓取,如果你希望某个页面彻底消失,请使用 noindex 标签,并把敏感目录的防护交给更可靠的安全手段。

图1 图2

nginx