Robots.txt 配置全攻略:核心语法与高频易错点解析

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

Robots.txt 是放在网站根目录下的一个纯文本文件,用来告诉搜索引擎爬虫哪些页面可以抓取、哪些页面应该跳过。它本质上是一份君子协定,并不是强制执行的安全屏障。如果配置得当,可以让爬虫把精力聚焦在真正有价值的页面上,同时也能减少服务器不必要的带宽消耗。

1. 搜索引擎爬虫如何读取这个文件

爬虫在正式抓取网页之前,会先请求站点根目录下的 /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/ 才会更精确。

4. 编写时的关键细节与注意事项

文件名必须严格命名为 robots.txt,不能有任何大小写变化或多余字符;文件只能放在网站根目录,放在子目录里是无效的。另外,每条规则之间要用空行分隔,指令冒号后面要有一个空格,虽然有些爬虫比较宽容,但规范的格式可以避免意外问题。

修改完文件后建议立刻用搜索引擎的站长工具进行测试,比如 Google Search Console 里的 robots.txt 测试器,能直观看到每一条规则的匹配结果。测试完成之前不要大规模改动线上配置,尽量在本地或测试环境先验证好再上线。

需要特别注意的是,Disallow 后面接的必须是路径前缀,而不是正则表达式,也不支持通配符 * 和 $ 这样的写法,除非个别搜索引擎有自己的扩展语法。写规则时,每一行指令只针对一种爬虫,不同爬虫需求不同,分开写会更稳定。

5. 常见问题

5.1 Q1:Disallow 和 Allow 同时匹配同一个路径时,到底听谁的?

在路径长度相同的情况下,Allow 的优先级更高。举个例子,如果 Disallow: /private/ 和 Allow: /private/special.html 同时存在,那么 special.html 这个文件可以被正常抓取。但要注意,这个优先级只适用于路径匹配长度相同的情况,如果路径长短不一致,优先匹配更长的那个规则。

5.2 Q2:如果 robots.txt 文件里面写错了语法,会发生什么?

大多数主流爬虫在遇到语法错误时,会采取最保守的策略,也就是不抓取任何内容,这意味着你的网站可能从搜索结果里彻底消失。所以每次修改完文件,最好先用站长工具的测试功能验证一遍,确认没有任何格式问题再放到线上。

5.3 Q3:robots.txt 能阻止别人把我的网页内容复制走吗?

不能。robots.txt 只对遵守协议的搜索引擎爬虫有效,对恶意爬虫、采集工具或者直接访问链接的用户没有任何约束力。如果想防止内容被随意抓取,可以考虑设置登录验证、添加访问频率限制等方式,但也要注意,这些措施可能会影响到搜索引擎的正常收录。

6. 结语

Robots.txt 配置的核心原则是:让爬虫去它该去的地方,把资源留给高质量页面。建议你在写完规则后,分两步做检查:先确认每条规则对应的路径是否准确,再确认 Allow 和 Disallow 之间没有互相矛盾的优先级问题。最后用站长工具实际测试一遍再上线,这样既能确保收录效果,也能避免服务器资源的浪费。

图1 图2

nginx