robots.txt 规则写法与常见配置陷阱全解析

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

搜索引擎的抓取工具访问一个网站时,第一步往往就是查看根目录下的 robots.txt 文件。这个普通的文本文件,本质上相当于写给爬虫的一封"参观指南",明确了哪些页面可以浏览、哪些区域禁止入内。规则设置得当,既能保护后台和敏感目录不被搜索索引,也能引导爬虫将有限的抓取配额集中到关键页面上,对站点的搜索表现有明显助力。

1. 指令解析:厘清每个参数的真正用途

robots.txt 文件必须存放于网站根目录,例如 https://yourdomain.com/robots.txt。文件名大小写敏感,通常建议采用 UTF-8 编码保存,每条规则单独一行,行尾避免多余空格。要把规则写准确,先得弄清楚几个基础参数的定义与边界:

除了以上三项,还可以添加 Sitemap 行来指明站点地图的位置。下面是一个常见的组合示例:

User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://yourdomain.com/sitemap.xml

这段配置的含义是:站点默认开放抓取,但 /admin/ 目录不开放,其中 /admin/public/ 属于例外,可以访问。这里有一个常见的坑:如果某个爬虫不理解 Allow 指令,它只会遵循 Disallow 的限制,那么 /admin/public/ 对它来说依然是禁地。

2. 典型配置模板:按需套用

不同类型的网站对抓取的控制需求差异很大。以下三种模式覆盖了大多数场景,你可以直接参考并替换成对应的路径。

2.1 全站开放抓取

对于内容型站点或新上线的网站,通常希望所有页面都能被索引。此时只需一行规则:

User-agent: *
Disallow:

其实省略 Disallow 一行效果也完全相同。最怕的是误写成 Disallow: /,一旦如此,所有爬虫都会被拒之门外,收录工作立即中断。修改规则后,最好使用站长平台的抓取测试工具验证实际效果。

2.2 单独屏蔽某个搜索引擎

如果不想让某个特定引擎收录页面,只需为它单独写一条规则:

User-agent: Bingbot
Disallow: /

这样设置不会影响其他爬虫的抓取策略。需要特别注意爬虫名称必须写准确,比如 Googlebot、Baiduspider 和 Sogou 蜘蛛的名称各不相同,写错名称规则就会失效,建议到各搜索引擎官方文档中核对爬虫名称。

2.3 仅允许特定目录被访问

部分工具型站点希望爬虫只进入某些特定目录,其他路径全部封锁。配置方式如下:

User-agent: *
Allow: /public/
Disallow: /

这种写法先允许 /public/ 目录,再禁止其他所有路径。但这里有个关键前提:由于 Allow 并非所有爬虫都支持,对于不识别该指令的爬虫,这条规则可能会变成全站拒绝。因此,如果你依赖这种配置,最好针对目标搜索引擎单独设一条规则,并把支持 Allow 的爬虫列在文件靠前的位置。

3. 容易被忽视的配置陷阱

实际运维中,很多问题并非规则写错,而是细节没注意到。这类陷阱隐蔽性强,排查起来也费时。

4. 如何测试与验证规则是否生效

写完 robots.txt 并不意味着万事大吉,规则是否按预期执行必须经过验证。

  1. 在浏览器中直接访问 https://yourdomain.com/robots.txt,确认文件内容与服务器返回状态正常。
  2. 使用搜索引擎官方提供的测试工具,例如 Google Search Console 的"robots.txt 测试器",或者 Bing Webmaster Tools 的相关功能。
  3. curl 或类似工具请求一个被屏蔽的路径,观察响应内容。注意:robots.txt 只影响爬虫,不会对普通浏览器产生拦截效果。
  4. 查看搜索平台的后台抓取报告,确认被 Disallow 的路径没有出现在抓取记录中。

测试时还要注意 CDN 或缓存的影响,某些缓存插件可能输出旧版文件内容,导致测试结果失真。

5. 常见问题

5.1 robots.txt 能否阻止搜索引擎收录页面的快照?

不能。robots.txt 的作用是阻止爬虫访问页面,但如果页面被其他外部链接指向,搜索引擎可能仍会根据链接描述生成摘要或展示有限信息。想要彻底不显示,需要同时使用 noindex 标签。

5.2 Disallow 和 noindex 有什么区别?

Disallow 是请求爬虫不要访问页面,属于抓取层面;noindex 是告诉爬虫不索引页面,属于收录层面。如果只用 Disallow,爬虫无法看到页面内容,也就无法识别 noindex 指令,因此两者通常配合使用,顺序是先放行抓取,再声明不索引。

5.3 修改 robots.txt 后,已被收录的页面会立即删除吗?

不会。已收录的页面会继续留在搜索结果中,直到搜索引擎下次抓取时重新评估。如果想要更快移除,可以通过站长平台的删除 URL 工具提交申请,或等待自然更新周期。

6. 总结

robots.txt 看似简单,却是站点与搜索引擎之间最底层的一道沟通桥梁。遵循"根目录存放、UTF-8 编码、逐行指令、爬虫名称准确"这几个基本准则,就能避开绝大部分低级错误。日常运维中,建议将文件变更纳入版本管理,每次改动后务必用官方工具复查,并间隔一段时间观察抓取报告中是否有异常波动。只有先守住这份基础规则,后续的内容优化和链接建设才能发挥应有的效果。

图1 图2

nginx