Robots.txt 配置详解:语法规则与高频避坑指南

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

Robots.txt 是放在网站根目录的纯文本文件,依靠约定俗成的指令告诉搜索引擎蜘蛛哪些页面可以抓取、哪些路径需要避开。它属于君子协议,没有强制力,是否遵守全凭爬虫自觉。配置得当能引导蜘蛛优先抓取重点内容,减轻服务器压力;配置失误则可能让整站从搜索结果中消失,代价不小。

1. Robots.txt 的实际作用与能力边界

蜘蛛访问一个站点,第一步往往就是读取根目录下的 robots.txt,然后才决定接下来的爬行路线。如果找不到这个文件,蜘蛛默认整站都对外开放,所有公开的 URL 都有机会被收录。反过来,善用这个文件就能有意识地规划蜘蛛的抓取路径。

日常运营里,它主要用来完成这几类工作:屏蔽后台登录页和内部工具页面、过滤搜索结果页和自动聚合的标签页、对测试环境或临时目录设置访问门槛、以及通过设定抓取间隔来缓解服务器瞬时压力。

需要特别注意的是,协议只对正规搜索引擎的蜘蛛有效,恶意采集工具并不会遵守。因此凡是涉及用户隐私、交易数据等敏感信息,绝不能依赖 robots.txt 来保护,必须依靠服务器权限和程序层面的安全措施。

2. 语法规则与常用指令拆解

robots.txt 采用分组结构编写,每一组先声明规则针对哪个爬虫,再列出具体的指令。掌握以下几条基础指令,就能应对绝大多数场景:

2.1 份标准规范的配置模板

下面是一份典型配置的示例,可以直观看到各指令如何配合使用:

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

这份配置的含义是:所有搜索引擎蜘蛛都禁止抓取 temp 和 private 目录,但 private 下的 notice.html 属于例外,允许访问,同时告知蜘蛛站点地图的存放位置。值得注意的是 Allow 指令并非所有爬虫都支持,如果爬虫不识别该指令,它仍然会遵循 Disallow 的约束。

3. 高频应用场景与容易踩的坑

配置逻辑看似简单,实际上一个斜杠或字母的差异,结果可能截然不同。以下是站长们最容易出错的地方:

4. 配置后的校验方法与更新节奏

文件写完后不能就此高枕无忧,上线前和日常运营中都要进行必要的检查。
先说简单的自查方法:打开浏览器,直接访问 你的域名/robots.txt,看能否正常显示内容且无语法报错。各搜索引擎站长平台通常提供专门的 robots 测试工具,可以模拟蜘蛛抓取,查看实际生效的规则。修改配置后建议立即用这类工具验证一次,确认屏蔽范围符合预期。

再谈更新节奏,网站结构变化时配置需要同步调整,比如新增了目录、改版了 URL 规则。定期回顾也不可少,假设某个月流量出现明显的异常波动,先排查 robots.txt 是否被误改。注意不要频繁变动规则,每次改动后蜘蛛重新抓取并生效需要时间,短期内反复调整反而可能导致抓取不稳定。

5. 常见问题

5.1 Disallow 写错了,最快多久能让蜘蛛恢复抓取?

修改后的 robots.txt 会被蜘蛛定期重新抓取,具体时间因引擎而异,短则几十分钟,长则数天。修改完成后,可以在搜索引擎站长工具里手动提交 robots.txt 以加快生效速度,也可以主动提交受影响的 URL 请求重新抓取。

5.2 不想让某个页面被收录,设置 Disallow 够吗?

不够。Disallow 只能阻止抓取,如果页面已经存在于搜索索引中,搜索结果里仍会保留链接,只是没有摘要内容。最可靠的方式是同时使用 noindex 标签或 meta robots,明确告诉搜索引擎不收录该页面。

5.3 可以直接在根目录或者子目录里放多个 robots.txt 吗?

不行。规范要求 robots.txt 只能放在站点根目录,文件名必须小写。搜索引擎只会读取这一个文件。放在子目录下的同名文件不会被识别,如果想限制某个子目录,需要在该目录对应的主站 robots.txt 中用路径规则来声明。

6. 总结

配置好 robots.txt 的关键在于想清楚你要引导还是阻断,而不是机械套用模板。建议先把整站 URL 结构梳理一遍,明确哪些路径必须开放、哪些需要屏蔽,再动手编写。写完务必用站长工具的测试功能验证效果,并在每次改版后复查一遍。一旦发现索引数量骤降或抓取频率异常,第一时间检查这个文件,往往能快速定位问题。

图1 图2

nginx