news 2026/7/16 9:26:28

robots.txt 完全指南:从入门到精通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
robots.txt 完全指南:从入门到精通

一、什么是 robots.txt?

robots.txt是一个放在网站根目录下的纯文本文件,用于告诉搜索引擎爬虫(Robot/Spider/Crawler)哪些页面可以抓取,哪些不可以

它诞生于 1994 年的Robots Exclusion Protocol(机器人排除协议),虽然不是国际标准,但已被 Google、Bing、百度等主流搜索引擎广泛支持。

核心作用

作用说明
隐私保护阻止爬虫抓取后台、用户数据等敏感页面
SEO 优化避免低质量页面被索引,集中权重到核心内容
带宽节省减少爬虫对服务器资源的无效消耗
抓取引导通过 Sitemap 告诉爬虫网站结构

二、文件位置与基本格式

📍 必须放在根目录

https://example.com/robots.txt ✅ 正确 https://example.com/path/robots.txt ❌ 错误,搜索引擎只认根目录

📄 基本语法结构

User-agent: [爬虫名称] Disallow: [禁止抓取的路径] Allow: [允许抓取的路径] Sitemap: [站点地图地址]


三、指令详解与实战示例

1. User-agent — 指定爬虫身份

# 针对所有爬虫 User-agent: * # 只针对 Google User-agent: Googlebot # 只针对百度 User-agent: Baiduspider

常见爬虫名称对照表:

搜索引擎爬虫名称说明
GoogleGooglebot网页抓取
GoogleGooglebot-Image图片搜索
百度Baiduspider网页抓取
百度Baiduspider-image图片搜索
BingBingbot微软必应
搜狗Sogou spider搜狗搜索
360360Spider360搜索

2. Disallow — 禁止抓取

# 禁止抓取整个网站(不推荐,除非特殊场景) User-agent: * Disallow: / # 禁止抓取后台目录 Disallow: /admin/ # 禁止抓取所有 .php 文件 Disallow: /*.php$ # 禁止抓取包含 ? 的 URL(通常是动态参数) Disallow: /*?

3. Allow — 允许抓取(覆盖 Disallow)

# 禁止抓取 /private/ 目录,但允许抓取其中的 public 子目录 User-agent: * Disallow: /private/ Allow: /private/public/

⚠️ 注意:Allow 优先级高于 Disallow(Google 支持,部分搜索引擎可能不支持)。

4. Sitemap — 提交站点地图

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

可以放置多个 Sitemap,帮助爬虫更快发现网站内容。


四、高级匹配规则与通配符

通配符使用

符号含义示例
*匹配任意字符序列Disallow: /*.pdf$
$表示 URL 结尾Disallow: /*.jpg$

实战示例:复杂规则配置

# ============================================ # 示例:电商网站 robots.txt # ============================================ # 规则1:针对所有爬虫的基础规则 User-agent: * Disallow: /admin/ # 后台管理 Disallow: /cart/ # 购物车 Disallow: /checkout/ # 结算页面 Disallow: /user/ # 用户中心 Disallow: /search/ # 站内搜索结果(避免重复内容) Disallow: /*?sort= # 排序参数产生的重复页面 Disallow: /*?page= # 分页参数(如果有独立分页规则) Disallow: /api/ # 内部 API Disallow: /*.pdf$ # PDF 文件 Disallow: /*.zip$ # 压缩包 # 但允许抓取商品详情和分类 Allow: /product/ Allow: /category/ # 规则2:针对 Google 图片搜索的特殊规则 User-agent: Googlebot-Image Disallow: # 允许抓取所有图片 Allow: /uploads/images/ # 规则3:禁止恶意爬虫 User-agent: BadBot Disallow: / # 站点地图 Sitemap: https://example.com/sitemap.xml


五、常见误区与陷阱

❌ 误区 1:robots.txt 能保护隐私

真相robots.txt只是"建议",不是"强制"。恶意爬虫完全可以无视它。

# 错误的隐私保护方式 Disallow: /secret-page.html # 虽然合规爬虫不会抓,但所有人都能看到你的"秘密"路径!

✅ 正确做法:敏感内容使用HTTP 认证IP 白名单noindex 元标签

❌ 误区 2:Disallow 后页面就不会出现在搜索结果

真相:如果其他网站链接了这个页面,它仍可能出现在搜索结果中(只是没有描述)。

✅ 正确做法:对不想被索引的页面,同时使用:

<!-- 在页面 <head> 中添加 --> <meta name="robots" content="noindex, nofollow">

❌ 误区 3:用 robots.txt 屏蔽 CSS/JS 文件

真相:Google 需要渲染页面,屏蔽资源会影响 SEO 评分。

✅ 正确做法:不要屏蔽/css//js/目录。

❌ 误区 4:规则顺序无所谓

真相:规则匹配是从上到下,以第一个匹配的规则为准。

# ❌ 错误:Allow 永远不会生效 User-agent: * Disallow: / Allow: /public/ # ✅ 正确:先允许,再禁止 User-agent: * Allow: /public/ Disallow: /


六、验证与测试工具

1. Google Search Console

访问 Google Search Console → 抓取 → robots.txt 测试工具

2. 在线验证工具

  • Google Robots Testing Tool
  • 百度搜索资源平台

3. 手动验证

直接访问https://your-site.com/robots.txt检查内容。


七、最佳实践清单

✅ 应该做❌ 不应该做
明确指定 Sitemap用 robots.txt 保护敏感数据
屏蔽低价值页面(搜索页、过滤页)屏蔽 CSS/JS 文件
为不同爬虫设置差异化规则在 robots.txt 中暴露后台路径
定期检查和更新规则使用复杂的正则表达式(兼容性差)
配合<meta name="robots">使用期望所有爬虫都遵守规则

八、完整模板参考

# ============================================ # robots.txt for example.com # Last updated: 2026-07-15 # ============================================ # 全局规则 User-agent: * Disallow: /admin/ Disallow: /api/ Disallow: /tmp/ Disallow: /search? Disallow: /*?*sort= Disallow: /*?*filter= Allow: / # 允许图片爬虫 User-agent: Googlebot-Image User-agent: Baiduspider-image Allow: /uploads/ Allow: /static/images/ # 禁止已知的恶意爬虫 User-agent: MJ12bot User-agent: AhrefsBot Disallow: / # 站点地图 Sitemap: https://example.com/sitemap.xml Sitemap: https://example.com/sitemap-news.xml


九、总结

要点核心记忆
本质爬虫的"交通规则",非强制法律
位置必须放在网站根目录
隐私不能替代身份验证,只是防君子不防小人
SEO配合 noindex 使用,引导而非阻止索引
维护定期审查,特别是网站重构后

💡一句话总结robots.txt是网站与搜索引擎的"君子协定"——它告诉爬虫该去哪里,但无法阻止恶意访问。真正的安全,需要结合服务器层防护。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 9:24:08

迭代器模式:STL的灵魂设计思想,面试问你理解有多深

上篇聊了stack和queue&#xff0c;STL容器的部分基本讲完了。今天聊一个贯穿整个STL的设计思想——迭代器。迭代器是STL的灵魂。没有迭代器&#xff0c;容器和算法就是割裂的。有了迭代器&#xff0c;任何算法都能作用于任何容器。这就是STL最精妙的设计。面试里考迭代器&#…

作者头像 李华
网站建设 2026/7/16 9:23:00

WinRAR 7.23安装配置全攻略:从基础压缩到高级功能详解

今天我们来详细讲解一款经典压缩解压工具——WinRAR的安装与设置。作为装机必备软件之一&#xff0c;WinRAR凭借其强大的压缩能力和广泛的格式支持&#xff0c;至今仍是文件管理的重要工具。本文将带你从下载安装到深度配置&#xff0c;全面掌握这款软件的使用技巧。 WinRAR最…

作者头像 李华
网站建设 2026/7/16 9:18:52

现代C++演进:从C++11到C++23核心特性解析与实战指南

1. 项目概述&#xff1a;为什么我们需要关注现代C的演进 如果你和我一样&#xff0c;是从C98/03那个“经典”时代一路走过来的开发者&#xff0c;那么第一次接触C11时&#xff0c;那种感觉就像是从黑白电视换到了4K高清。指针、手动内存管理、冗长的迭代器代码……这些曾经是C程…

作者头像 李华
网站建设 2026/7/16 9:17:21

Java多线程同步:join()方法的底层实现与wait()机制深度解析

1. join()方法的核心作用与使用场景 当你第一次看到 join() 这个方法名时&#xff0c;可能会联想到"加入"这个词。在Java多线程中&#xff0c; join() 确实扮演着让线程"加入"当前执行流程的角色。简单来说&#xff0c;它允许一个线程等待另一个线程执…

作者头像 李华
网站建设 2026/7/16 9:16:39

接口突然慢了 10 倍,我用这 5 个命令定位到一条 SQL

接口突然慢了 10 倍&#xff0c;我用这 5 个命令定位到一条 SQL一个原本 200ms 的订单接口&#xff0c;线上突然变成 2 秒&#xff0c;偶尔还会直接超时。 CPU 看起来不高&#xff0c;内存也没有爆&#xff0c;重启之后短暂恢复&#xff0c;过一会儿又开始变慢。 最后没有靠重启…

作者头像 李华