robots.txt 配置指南:语法、常见错误与实用范

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

搜索引擎的爬虫造访网站时,第一步往往不是立即抓取内容,而是先读取根目录下的 robots.txt 文件。这个纯文本协议相当于一份访问守则,明确告诉爬虫哪些内容可以抓取、哪些区域应当回避。一份设置得当的 robots.txt 既能保护后台和敏感数据不被收录,也能减少无效请求对服务器资源的占用,让爬虫专注于抓取那些真正重要的页面。

1. 语法要点:正确理解每条指令的含义

robots.txt 文件必须放置在网站根目录,也就是 https://example.com/robots.txt 这个位置。文件需要使用 UTF-8 编码,每条指令单独占一行,路径区分大小写。一份标准的 robots.txt 通常包含以下核心字段:

文件里还可以加入 Sitemap 指令,用于告知爬虫站点地图的存放地址。以下是一个常见的配置示例:

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

这个示例表示:所有爬虫都可以访问全站,但 /admin/ 目录被排除在外,其中 /admin/public/ 子目录又单独被解除限制。这里常见的认识误区在于——Allow 并非所有爬虫都支持,不支持的爬虫仍会按 Disallow 规则执行,导致你想开放的子目录同样无法被抓取。

2. 常见配置模板:按场景选择合适的写法

根据网站自身定位的不同,robots.txt 的配置思路也应有所区别。以下归纳了三种最常见的适用场景供参考。

2.1 全站开放收录:加快内容快速被抓取

如果你的网站是内容型平台,或者刚上线不久需要加快页面收录速度,通常希望所有页面都能被爬虫抓取。此时只需保持 Disallow 为空即可:

User-agent: *
Disallow:

也可以直接省略 Disallow 这一行,效果等同于允许全部抓取。这里最容易踩的坑是把 Disallow 写成单独一个斜杠。一旦出现这种写法,所有爬虫都将无法访问全站任何页面,收录工作会即刻中断。检查时建议重点确认冒号后面是否为空白。

2.2 定向拦截:仅屏蔽特定搜索引擎

当不希望某个搜索引擎收录站点内容时,可以为该爬虫单独设定规则,这样不会干扰其他搜索引擎蜘蛛的正常抓取:

User-agent: Bingbot
Disallow: /

通过这种写法,Bingbot 会被整体拒绝,而其他搜索引擎的爬虫不受任何影响。需要注意的是,不同爬虫的名称需要准确填写,拼写错误会导致规则失效。建议参考各搜索引擎官方文档确认爬虫名称的准确写法。

2.3 放行部分内容:允许特定目录可被抓取

有些网站在屏蔽某个目录的同时,希望其中某些子页面仍然能被收录。这时可以配合 Allow 指令来实现精准控制:

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

上述配置的含义是:/resources/ 目录整体不被抓取,但其中名为 public 的子目录作为例外被放行。如果你使用的搜索引擎不支持 Allow 指令,这个例外将不会生效,目录中的全部内容依然会被屏蔽。在依赖此写法前,建议先确认目标搜索引擎对 Allow 支持的具体情况。

3. 常见误区与避坑建议

在实际配置过程中,一些看似不起眼的细节可能导致完全不同的结果。最典型的问题包括:路径大小写不匹配导致规则失效;空格使用不当使整条指令无法被解析;文件命名错误导致爬虫找不到 robots.txt。另外,不要用 robots.txt 来保护需要真正保密的内容,因为该文件是公开可读的,任何人通过浏览器都可以直接访问查看。真正需要保密的数据应该通过登录验证或服务器权限来控制。

更合理的思路是,robots.txt 只用于控制爬虫的抓取行为,而不是当作安全工具来使用。配置完成后,可以在搜索引擎中搜索 site:你的域名,来验证屏蔽规则是否正常生效。

4. 检查与维护:让规则持续有效

配置完成后,还需要定期检查规则是否仍在正确运行。建议每个季度做一次全面的自查,确认目录结构变化后规则是否仍然适用。当你调整网站目录、上线新功能或更换服务器时,都应当同步检查 robots.txt 是否还能满足实际需要。同时,可以通过搜索引擎站长平台提供的抓取测试工具,验证具体页面的抓取许可状态。输入页面地址后,如果工具显示被阻止,就需要检查是哪一条规则导致了误伤。

维护时还要注意,robots.txt 文件不应过于庞大,一般建议控制在 500 KiB 以内,过长的文件会拖慢爬虫的读取速度。同时建议保留文件末尾的换行空行,避免某些解析器对末行指令的误读。

5. 常见问题

5.1 Q1:robots.txt 写错了会影响网站安全吗?

严格来说,robots.txt 是一种约定俗成的协议,并没有强制约束力,也不涉及安全防护。它只是告诉搜索引擎哪些页面不应该出现在搜索结果中。真正敏感的页面仍然可能被链接分享或直接访问到,因此绝不能依靠它来保护需要保密的数据。敏感内容应配合登录权限、IP 白名单等手段来维护。

5.2 Q2:Allow 和 Disallow 同时存在时,哪个优先级更高?

优先级的判断以最长路径匹配为原则。当爬虫遇到两个都命中某条路径的规则时,路径最长的条目胜出。例如 Disallow: /images/ 与 Allow: /images/logo/ 同时存在时,爬虫访问 /images/logo/logo.png 时会被 Allow 规则放行,因为它匹配了更长的路径。若两条规则路径长度相同,则 Allow 具有更高优先级。

5.3 Q3:robots.txt 修改后,多久能生效?

这取决于搜索引擎的爬虫抓取频率。多数搜索引擎会定期重新获取 robots.txt,通常几小时到几天不等。修改完成后你可以借助搜索引擎站长工具手动提交更新请求,以缩短等待时间。还有一点值得注意:搜索引擎在遇到 404、500 等服务器错误时,通常会暂停抓取,所以务必保证 robots.txt 能正常返回 200 状态码。

6. 总结

合理配置 robots.txt 的关键在于对自身需求保持清晰判断:内容型网站侧重开放收录,品牌站点适当屏蔽低价值目录,不希望被某些搜索引擎收录时则做定向拦截。配置时留意路径大小写、Allow 依赖程度和 Disallow 写法等细节,就能大幅减少不必要的抓取问题。建议配置完成后,先用站长平台的相应工具验证规则是否按预期生效,再定期复查,确保规则与网站结构同步演进。

图1 图2

nginx