Robots.txt 必备指南:语法解析与常见配置错误规避

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

Robots.txt 是一个放在网站根目录的纯文本文件,它的作用是告诉搜索引擎爬虫哪些页面可以抓取,哪些页面应当避开。它并非强制性的安全屏障,而是一份爬虫自愿遵守的协议。合理配置 robots.txt,能让爬虫更高效地抓取重要页面,同时减轻服务器压力。

1. 爬虫访问 robots.txt 的实际流程

搜索引擎的爬虫开启抓取任务之前,会先请求网站根目录下的 /robots.txt。如果文件存在并且爬虫遵守协议,它就会根据文件中的指令规划抓取范围;如果文件不存在,爬虫默认允许抓取所有可以公开访问的链接。

实际应用中,robots.txt 通常用于:屏蔽后台登录页面、过滤标签页或搜索结果页这类低价值内容、降低爬虫抓取频率以减少带宽消耗。需要注意,合规的搜索引擎会遵循规则,但恶意程序未必理会,所以不要把它当作安全防护工具来依赖。

2. 核心语法与指令详解

robots.txt 由多个记录块组成,每个记录块以 User-agent 开头,随后列出各项指令。以下五个指令是必须掌握的基础:

2.1 份清晰的典型配置示例

下面的写法逻辑直观,方便后期维护:

User-agent: *
Disallow: /tmp/
Disallow: /private/
Allow: /private/special.html
Sitemap: https://www.example.com/sitemap.xml

这条规则的实际效果是:所有爬虫都不得抓取 tmp 和 private 两个目录,但 private 里的 special.html 被单独放行,同时告知爬虫站点地图的存放位置。

3. 典型应用场景与避坑经验

配置 robots.txt 看似简单,实际操作中经常因为细节疏漏导致预期落空。以下几种情况值得特别注意:

避坑提示:路径匹配属于前缀匹配,Disallow: /news 会同时屏蔽 /newsletter 页面,若只想屏蔽 /news 目录,应写成 /news/。另外,修改 robots.txt 后建议立即用搜索引擎的抓取测试工具验证效果,不要凭感觉判断是否生效。

4. 常见问题与进阶注意事项

除了基础配置,还有一些进阶问题值得了解,否则容易在后期排查时陷入困惑。

4.1 误用 Allow 与 Disallow 的优先级

在相同长度的路径匹配中,Allow 优先于 Disallow。但在实际配置中,很多人误以为只要写了 Allow 就能放行一切,实际上如果 Allow 的路径前缀比 Disallow 短,Disallow 依然会生效。比如 Disallow: /images/ 配上 Allow: /images/logo.png,才能正确放行 logo 文件。

4.2 使用通配符与正则表达式的边界

部分搜索引擎支持 $ 表示匹配结尾,* 表示任意字符序列,但并非所有爬虫都支持这些符号。建议只在确定目标爬虫支持的前提下使用,否则可能造成意想不到的屏蔽范围,一旦发现收录异常,先排查这类语法问题。

5. 常见问题

5.1 robots.txt 能否防止搜索引擎收录我的网页?

不能完全防止。robots.txt 只是阻止爬虫抓取,但如果其他网站链接了你的页面,搜索引擎依然可能将 URL 收录(只是不显示内容)。若想让页面彻底从索引中移除,应使用 noindex 标签或在后台删除页面。

5.2 修改 robots.txt 后多久生效?

没有固定时间。爬虫不是实时读取该文件的,通常需要几小时到几天不等。建议修改后用 Google Search Console 或百度搜索资源平台的抓取测试工具主动提交验证,可以显著缩短等待时间。

5.3 Sitemap 指令是否必须放在最后?

没有强制规定。Sitemap 指令的位置不影响其生效,只要写在文件里即可。不过为了阅读清晰,多数人习惯放在文件的末尾,并且在每个记录写完后新建一行再声明。

6. 总结

合理配置 robots.txt 能有效管理爬虫的抓取范围,提升重要页面的曝光效率。配置时先明确业务目标,再动手写规则;写完务必用测试工具逐条验证,尤其注意前缀匹配、Allow 优先级和具体爬虫的差异。建议每次改动都保留一份变更记录,方便后续回溯和排错。

图1 图2

nginx