robots.txt 配置全攻略:从基础规则到高级写法详解

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

robots.txt 是存放在网站根目录的纯文本文件,用来告诉搜索引擎爬虫哪些页面可以抓取、哪些应该避开。合理设置这份文件,既能防止后台目录和隐私数据被搜索引擎收录,又能减少重复页面的抓取浪费,把爬虫的精力引导到真正重要的内容上。下面从最基本的语法讲起,逐步深入到常见场景和进阶写法。

1. 核心语法:认识 User-agent 与 Disallow

robots.txt 的规则由一个个指令块组成,每个块先声明针对哪个爬虫,再写允许或禁止的路径。最核心的两个指令是 User-agent 和 Disallow,前者指定目标爬虫,后者禁止访问某个路径。此外还有 Allow 指令,用于在禁止范围内单独放行某些文件。

例如下面的配置禁止所有爬虫访问 /private/ 目录,但允许抓取其中名为 public-page.html 的页面:

User-agent: * Disallow: /private/ Allow: /private/public-page.html

需要特别注意:Allow 的优先级高于 Disallow,这条规则已被 Google、Bing、百度等主流搜索引擎采用。每条指令必须独立成行,行末不要留空格或多余字符,否则可能被部分爬虫忽略。

如果不对所有爬虫生效,可以把星号换成具体的爬虫名称,比如 Googlebot、Bingbot、Baiduspider。每条规则只针对一个 User-agent,想限定多个爬虫就要写多个指令块。

2. 常见场景:典型配置写法与判断标准

不同网站对抓取的需求差别很大,下面列出几种最常见的配置模式,可以直接参考修改。

2.1 完全屏蔽所有爬虫

网站还在开发中,或者需要临时下线时,用这条规则可以阻止任何爬虫进入:

User-agent: * Disallow: /

注意这里的斜杠代表根目录,含义是禁止访问整站。如果只写 Disallow: 而不带路径,则表示允许抓取全部内容,两者意思完全不同。

2.2 屏蔽后台目录与临时文件

后台登录界面、缓存文件夹、临时上传目录通常不需要被索引。可以分别指定路径:

User-agent: * Disallow: /admin/ Disallow: /tmp/ Disallow: /includes/

判断一个目录是否需要屏蔽,可以看两点:一是用户是否必须登录才能看到内容,二是该目录是否有独立搜索价值。两者符合其一,通常就应该加进 Disallow。

2.3 只禁止特定搜索引擎

某些情况下希望限制某个搜索引擎的抓取,而不是全部拦截。这时只需把 User-agent 换成对应名称:

User-agent: Baiduspider Disallow: /

这样只有百度爬虫被拒绝,Google 和 Bing 的爬虫不受影响。建议先通过搜索引擎官方文档确认爬虫的确切名称,拼写错误会导致规则完全失效。

2.4 完全开放整站抓取

新站或内容站点通常希望尽量多地被收录,这时可以写空白 Disallow,或者干脆省略 Disallow 行:

User-agent: * Disallow:

但要注意,即使不写 robots.txt,爬虫也能正常抓取。文件缺失和文件内容为空,对搜索引擎来说没有本质区别。

还有一个容易踩坑的点:robots.txt 只能放在域名根目录,比如 https://example.com/robots.txt。放在子目录或带上其他路径都不会生效,而且文件编码建议用 UTF-8 无 BOM 格式。

3. 进阶用法:Sitemap 声明与通配符

robots.txt 不仅可以拦截路径,还能帮助搜索引擎发现网站地图。通过 Sitemap 指令可以主动告知 XML 地图的位置:

Sitemap: https://example.com/sitemap.xml

Sitemap 指令不隶属于任何 User-agent 块,可以放在文件任意位置——文件开头、中间或结尾都行。它相当于给爬虫提供一个快速入口,尤其适合新站或页面层级较深的站点。

部分搜索引擎还支持有限的正则表达式,最常见的是星号和美元符号。星号表示匹配任意字符序列,美元符号表示路径到此结束。例如下面的写法可以禁止爬虫抓取所有 PDF 文件:

User-agent: * Disallow: /*.pdf$

需要说明的是,不同爬虫对通配符的支持程度并不一致。Google 和 Bing 支持得比较完整,但部分小众爬虫可能完全不识别,遇到这类语法会直接忽略整条规则。实际使用前,最好先去对应搜索引擎的官方文档确认支持范围。

另外要注意区分大小写:robots.txt 中的路径匹配是区分大小写的,/Product/ 和 /product/ 是两个不同的路径。建议统一使用小写路径,避免出问题。

4. 避坑清单:配置前必读的注意事项

下面这几点是实际运维中最容易出问题的地方,提前避开能省去很多麻烦。

每次修改 robots.txt 后,建议在浏览器直接访问 https://你的域名/robots.txt 检查内容是否正常返回,同时确认服务器返回的是 200 状态码而不是 404。

5. 常见问题

5.1 robots.txt 能提高网站收录速度吗?

它本身不能直接提升收录速度,但合理配置可以减少爬虫在无用页面上的精力消耗,让搜索引擎更集中地抓取核心内容。想加快收录,更有效的方式是在 Sitemap 中列出重要页面,并通过搜索控制台提交。

5.2 被 Disallow 的页面还会出现在搜索结果里吗?

如果页面之前已经被索引,加入 Disallow 后不会立即从搜索结果消失,需要等搜索引擎重新抓取时发现规则更新。如果内容因其他网站转载而存在,即使本站屏蔽了,也可能通过外部链接进入索引。想彻底移除,还需要用 noindex 标签配合处理。

5.3 robots.txt 和 noindex 有什么区别?

robots.txt 是阻止爬虫抓取,属于访问控制;noindex 是告诉搜索引擎不要索引这个页面,但爬虫仍然可以读取内容。对于不想被搜索到的页面,建议两者配合使用:用 robots.txt 控制抓取,再用 noindex 防止已经抓取的页面进入索引库。

6. 总结

robots.txt 的核心价值在于引导爬虫按照你的意图分配抓取资源:用 User-agent 指定对象,用 Disallow 划定禁区,用 Allow 精确放行,再配合 Sitemap 指令告诉搜索引擎重点内容的位置。实际配置时,先从屏蔽后台目录、限制特定爬虫这些简单场景入手,逐步尝试通配符等高级写法。每次改完都去站长工具里验证一遍,确认规则没有误伤正常页面。记住一个原则:robots.txt 不是安全屏障,只是抓取的"交通规则"——真正需要保护的数据,永远不要只靠它来拦截。

图1 图2

nginx