什么是 robots.txt?
robots.txt(又称“爬虫协议”或“机器人协议”)是一个纯文本文件,它存放在网站的根目录下(https://www.example.com/robots.txt)。

(图片来源网络,侵删)
它的作用是向搜索引擎的爬虫(如 Googlebot、Bingbot 等)发出指令,告诉它们网站的哪些部分可以抓取,哪些部分不可以抓取。
重要提示: robots.txt 是一个“君子协议”,它不是一个强制性的法律或技术屏障,一个行为不端的爬虫完全可以忽略它,对于高度敏感或私有的数据,不能仅仅依赖 robots.txt 来保护,而应使用其他安全措施(如登录认证、IP 黑名单等)。
robots.txt 的主要作用
- 控制服务器负载:防止爬虫抓取网站的后端管理页面、搜索结果页、API 接口等对服务器压力大的动态内容。
- 防止重复内容:告诉爬虫忽略那些会产生大量重复内容的页面(如分页、打印版本、排序后的列表),从而避免这些页面与原始页面竞争排名。
- 保护私有或敏感区域:阻止搜索引擎抓取用户登录后的个人资料页面、购物车、管理员后台等。
- 引导爬虫高效抓取:通过
Sitemap指令,主动向搜索引擎提供网站所有重要页面的列表,帮助它们更快、更全面地发现你的网站内容。
robots.txt 的基本语法
robots.txt 文件由一个或多个“记录块”组成,每个记录块包含一个或多个指令。
记录块结构
一个记录块由两行或多行组成:

(图片来源网络,侵删)
User-agent(必需):指定这条规则适用于哪个爬虫。- 代表所有爬虫。
Googlebot:代表 Google 的爬虫。Bingbot:代表微软必应的爬虫。- 你可以指定多个
User-agent,也可以使用通配符 。
Disallow(可选):告诉指定的爬虫,不允许抓取哪个路径。- 禁止抓取整个网站。
/private/:禁止抓取private目录下的所有内容。/admin.php:禁止抓取根目录下的admin.php文件。- 空值 (
Disallow:或Disallow):表示允许抓取所有内容。
Allow(可选):通常与Disallow结合使用,用于“例外”允许某个路径。Disallow: /private/user-images/禁止了整个user-images目录,但Allow: /private/user-images/logo.png可以允许抓取该目录下的特定文件。
Sitemap(可选):指定网站地图文件的 URL,这个指令可以出现在文件的任何位置,并且可以有多个Sitemap指令。
常见指令详解
| 指令 | 描述 | 示例 |
|---|---|---|
User-agent |
定义规则适用的对象 | User-agent: Googlebot |
Disallow |
禁止抓取的路径 | Disallow: /admin/ |
Allow |
允许抓取的路径(常用于 Disallow 的例外) |
Allow: /public/admin/ |
Sitemap |
指向网站地图的位置 | Sitemap: https://www.example.com/sitemap.xml |
| *``** | 通配符,代表所有字符或所有爬虫 | User-agent: * Disallow: /secret*.php |
| 通配符,代表字符串的末尾 | Disallow: /*.jpg$ (禁止所有以 .jpg 结尾的 URL) |
实战示例
示例 1:一个简单的博客网站
# 允许所有搜索引擎抓取所有内容 User-agent: * Disallow: # 或者直接不写 Disallow,效果也是允许所有 # User-agent: *
示例 2:禁止所有爬虫
# 告诉所有爬虫,这个网站的所有内容都不要抓取 User-agent: * Disallow: /
示例 3:一个常见的电商网站配置
# 针对 Google 图片爬虫的特殊规则 User-agent: Googlebot-Image Disallow: Allow: / # 针对 Google 新闻爬虫的特殊规则 User-agent: Googlebot-News Disallow: / # 针对所有其他爬虫的规则 User-agent: * # 禁止抓取管理后台、用户数据、临时文件和配置文件 Disallow: /admin/ Disallow: /my-account/ Disallow: /cart/ Disallow: /checkout/ Disallow: /tmp/ Disallow: /config.php # 允许抓取公共目录下的所有内容 Allow: /public/ # 指定网站地图 Sitemap: https://www.example.com/sitemap.xml Sitemap: https://www.example.com/news-sitemap.xml
示例 4:使用通配符
User-agent: * # 禁止抓取所有以 `private` 开头的目录 Disallow: /private*/ # 禁止抓取所有 URL 中包含 `?id=` 的页面(通常代表会话ID或动态参数) Disallow: /*?id= # 禁止抓取所有以 `.pdf` 结尾的文件 Disallow: /*.pdf$
常见误区和最佳实践
robots.txt 是保护隐私的防火墙
事实:如前所述,robots.txt 只是一个指导性文件,恶意用户或爬虫可以轻松绕过它,不要用它来保护真正的敏感数据。
在 Disallow 中使用密码
事实:Disallow 只处理路径,不处理认证。Disallow: /admin/login.php 是无效的,因为爬虫无法处理登录流程,正确的做法是禁止整个 /admin/ 目录。
禁止抓取 /?s=(搜索结果页)会影响 SEO
事实:搜索结果页包含大量重复内容,抓取它们没有价值,还会浪费爬虫的“抓取预算”(Crawl Budget),禁止抓取它们是推荐做法,有助于爬虫更好地发现你真正重要的页面。
最佳实践
- 放在根目录:确保文件位于
https://yourdomain.com/robots.txt。 - 使用小写字母:虽然标准不强制,但路径通常是小写的,使用小写可以避免混淆。
- 清晰注释:使用 添加注释,解释每条规则的目的,方便自己和他人维护。
- 不要用
Disallow: /来隐藏网站:如果你不希望网站被搜索引擎收录,应该在站长工具中设置“从搜索结果中移除”,或者使用noindexmeta 标签。Disallow: /只是告诉爬虫“不要抓取”,但已经抓取并收录的页面可能仍然会显示在搜索结果中。 - 测试!测试!测试!:在发布前,务必使用 Google 的 robots.txt 测试工具 或 Bing 的 robots.txt 测试工具 来验证你的语法是否正确,规则是否按预期工作。
如何查看和创建 robots.txt?
- 查看:在浏览器地址栏中输入
你的网站域名/robots.txt即可查看。https://www.google.com/robots.txt。 - 创建:
- 使用任何文本编辑器(如记事本、VS Code、Sublime Text)创建一个新文件。
- 编写你的
robots.txt规则。 - 将文件保存为
robots.txt(注意没有后缀名)。 - 通过 FTP、SFTP 或网站管理后台,将文件上传到你网站的根目录下。
希望这份详细的指南能帮助你全面理解和使用 robots.txt!

(图片来源网络,侵删)
