robots.txt配置完全指南:从基础语法到避坑实践

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

robots.txt 是部署在网站根目录下的一个纯文本文件,用来告诉搜索引擎爬虫哪些页面可以抓取、哪些页面应当跳过。合理利用它能帮网站把抓取预算花在刀刃上,避免后台、购物车等无用链接被反复抓取;但文件写错了也可能让首页或核心分类被误屏蔽,直接导致收录量雪崩式下滑。接下来我们从语法结构、常见场景、扩展指令到测试排查逐一展开。

1. robots.txt 的语法结构与放置要点

文件必须存放于网站的根目录,文件名只能是 robots.txt(全小写),否则爬虫无法识别。整个文件的语法主要由三块构成:User-agent 指明规则针对的爬虫;Disallow 列出禁止抓取的路径;Allow 则在被禁止的范围内重新开放某个子路径。

User-agent 的值是爬虫代号,星号 * 代表所有爬虫。Disallow 可以留空,表示不做任何限制;Allow 则常和 Disallow 搭配使用,用于白名单逻辑。文件写完后可以在浏览器地址栏直接输入 yourdomain.com/robots.txt 来确认是否能够正常读取。

需要注意,robots.txt 对所有访客完全公开,不要在里面暴露服务器目录结构或后台管理地址;且它只是声明协议,遵守不遵守完全靠爬虫自觉,恶意程序不会因此而停手。

2. 典型配置场景与实操写法

2.1 让全站对爬虫闭门谢客

适合尚未上线或处于改版测试阶段的站点。规则写法为:User-agent: * 下一行写 Disallow: /。此处斜杠代表整站所有路径,一旦加上此条,连首页也会被拦截。

2.2 对爬虫完全开放整站

如果想告诉搜索引擎欢迎任意抓取,写法是 User-agent: * 下一行写 Disallow:(冒号后为空,不要带空格或斜杠)。留空的含义即不做限制,不同于 Disallow: / 的全盘封禁。

2.3 只屏蔽某些目录或特定文件类型

不想让爬虫进后台目录,可以写 Disallow: /admin/;不希望 PDF、压缩包等资源被收录,可以写 Disallow: /*.pdf$,其中星号表示任意前缀,美元符号表示路径以 pdf 结尾。此类模糊匹配规则在理解无误时能大幅减少无效抓取。

2.4 对不同爬虫采用差异化策略

比如仅允许 Googlebot 抓取图片目录,其他爬虫一律禁止访问私有目录。写法规整:第一行 User-agent: Googlebot,接着写 Allow: /images/,再写 Disallow: /private/;然后另起一段 User-agent: * 加 Disallow: /private/。多条规则自上而下匹配,越具体的爬虫代号优先级越高,因此务必先写具体爬虫、后写通配爬虫,避免兜底规则把细化规则覆盖掉。

3. 比基本语法多迈一步:Sitemap 与 Crawl-delay

在 Allow/Disallow 之外,robots.txt 还支持两条具有实用价值的扩展指令,用好它们能进一步提升搜索引擎对站点的理解和抓取效率。

Sitemap 指令用于声明网站的 XML 地图 URL,帮助爬虫在发现规则收紧时仍能掌握全站页面清单。写法为 Sitemap: https://www.example.com/sitemap.xml,文件里可以重复写多行以填入多个地图 URL。此指令让搜索引擎更快找到新上线的页面,尤其对新站冷启动帮助明显。

Crawl-delay 指令用于设定爬虫每两次请求之间的最小间隔秒数,比如写 Crawl-delay: 10 即代表每次抓取至少隔 10 秒。对于服务器带宽有限或负载偏高的站,这条指令能有效防止爬虫流量把网站拖垮。但需留意,Google 官方已明确弃用此参数,其抓取速率应通过 Search Console 后台设置。如果你主力流量来自 Google,该指令形同虚设。

Sitemap 和 Crawl-delay 通常放在文件末尾,它们不以 User-agent 分组,对所有爬虫均适用。建议在更新文件后顺手用搜索引擎提供的检测工具复核一遍,避免规则被误读。

4. 高频配置错误与测试方法

4.1 Disallow 后面的斜杠成了隐形杀手

很多人在全站放行时写成了 Disallow: /,导致整站被爬虫拒之门外。判断标准是看该目录是否还能在搜索结果中看到:如果首页都消失,基本就是这条规则误伤了。正确的放宽写法应当是 Disallow:(留空),或者把要屏蔽的路径精确到具体目录。

4.2 把绝对网址误写在路径位置

Disallow 后应当填写路径而非完整 URL,比如 Disallow: https://www.example.com/admin/ 属于错误写法,正确形式为 Disallow: /admin/。此错误会让爬虫无法理解屏蔽范围,规则可能整体失效。

4.3 多个 User-agent 分组的覆盖逻辑搞混

若你为 Googlebot 写了 Allow,又为所有爬虫写了 Disallow,顺序不当会让 Google 的图片规则失效。牢记原则:先写具体代号,再写通配符,同一爬虫的规则合并生效。

测试 robots.txt 推荐采用两种途径:其一,直接访问站点域名后加 /robots.txt,肉眼核验规则内容是否与预期一致;其二,打开 Google Search Console 的 robots.txt 测试工具(或百度搜索资源平台的对应功能),提交文件后可模拟特定 URL 的抓取状态。修改文件后建议每一条规则都实测一遍,尤其是那些想放行和想屏蔽的页面,逐个输入验证,避免线上翻车。

4.4 把敏感机密信息写进 robots.txt

robots.txt 完全公开,任何人均可读取。它并不能真正保护数据,真正的密钥和管理入口要另用登录验证或服务器层面的访问控制来处理,而非依赖屏蔽规则。

5. 常见问题

5.1 修改 robots.txt 后多久能生效?

没有固定时间表。搜索引擎重新抓取该文件的频率从几小时到几天不等。如果想加速,可以在 Google Search Console 中手动请求重新抓取 robots.txt,通常次日即可看到最新状态;若规则变动较大,建议同步提交一次站点地图。

5.2 robots.txt 能阻止搜索引擎收录整片内容吗?

严格来说,它只能阻止抓取,不能直接控制收录。如果页面已被抓取并建立索引,仅删掉 robots 里的屏蔽规则并不能让页面立刻从结果中消失。若要彻底移除已收录页面,需要在站点地图或页面元标签中加入 noindex 标记来配合处理。

5.3 多个搜索引擎的爬虫代号如何区分?

常见的有 Googlebot(Google)、Baiduspider(百度)、Bingbot(必应)、YandexBot(Yandex)等。需要针对不同引擎使用不同策略时,务必查清对应的 User-agent 名称,写错代号会导致规则被忽略,从而产生抓取漏洞或误杀风险。

6. 总结

robots.txt 是每一名站长的基本功,但越基础越容易出错。建议你按"先想清要封锁什么、再写规则、最后逐条测试"的顺序完成配置。定期在每季度末做一次巡检,重点关注是否存在后台目录、重复参数页和临时页面的新增需求。若发现抓取异常,优先回看 robots.txt 与站点地图是否一致。始终保持理解:这文件不是安全工具,只是爬虫行为的一纸说明书——真实壁垒仍要依靠服务器权限与技术手段构建。

图1 图2

nginx