robots.txt 配置详解
💡 前置阅读建议
本文档专注于 robots.txt 的配置规范。如需了解 SEO 基础知识、常用工具或完整优化策略,请先阅读 SEO 核心技术与优化实战。
一、核心要点速览
💡 本文件核心考点
- robots.txt 定义:网站根目录的文本文件,用于控制搜索引擎爬虫的抓取行为
- 位置要求:必须放在网站根目录(如
https://example.com/robots.txt) - 核心作用:节省服务器资源、避免重复内容、引导爬虫优先级
- 重要原则:严禁阻止 CSS/JS 文件、不是安全机制、需配合 Sitemap 使用
二、什么是 robots.txt?
基本概念
robots.txt 是一个简单的文本文件,使用 Robots 排除协议(Robots Exclusion Protocol)标准,帮助网站管理员与搜索引擎爬虫沟通。
工作原理:
爬虫访问网站流程:
1. 先访问 https://example.com/robots.txt
2. 解析允许和禁止的规则
3. 根据规则决定抓取哪些页面
4. 不遵守规则可能被搜索引擎惩罚主要作用:
| 作用 | 说明 | 示例场景 |
|---|---|---|
| 节省带宽 | 阻止爬虫抓取无用页面 | 后台管理页、测试页 |
| 避免重复内容 | 阻止抓取参数化 URL | 排序、过滤产生的重复页 |
| 引导爬虫 | 优先抓取重要内容 | 配合 Sitemap 使用 |
三、基础语法详解
语法规则表
| 指令 | 格式 | 说明 | 是否必需 |
|---|---|---|---|
| User-agent | User-agent: <爬虫名称> | 指定适用的爬虫 | 必需 |
| Disallow | Disallow: <路径> | 禁止抓取的路径 | 可选 |
| Allow | Allow: <路径> | 允许抓取的路径(覆盖 Disallow) | 可选 |
| Crawl-delay | Crawl-delay: <秒数> | 两次请求之间的间隔时间 | 可选 |
| Sitemap | Sitemap: <URL> | 指定站点地图位置 | 可选 |
特殊符号说明
| 符号 | 含义 | 示例 |
|---|---|---|
* | 通配符,匹配任意字符 | Disallow: /*.pdf$ |
$ | 匹配 URL 结尾 | Disallow: /temp$ |
# | 注释符号 | # 这是注释 |
四、常见爬虫名称(User-agent)
主流搜索引擎爬虫
| 搜索引擎 | User-agent 名称 | 说明 |
|---|---|---|
Googlebot | Google 主爬虫 | |
Googlebot-Image | Google 图片爬虫 | |
Googlebot-News | Google 新闻爬虫 | |
Googlebot-Video | Google 视频爬虫 | |
| 百度 | Baiduspider | 百度网页爬虫 |
Baiduspider-image | 百度图片爬虫 | |
Baiduspider-video | 百度视频爬虫 | |
| Bing | bingbot | Bing 搜索爬虫 |
msnbot | MSN 搜索爬虫(旧) | |
| 其他 | Sogou web spider | 搜狗爬虫 |
YandexBot | Yandex 爬虫 |
通用爬虫标识:
*- 匹配所有爬虫- 建议针对特定爬虫设置不同规则
五、常用配置示例
示例 1:允许所有爬虫访问所有内容
# 完全开放的网站
User-agent: *
Disallow:说明:空的 Disallow 表示没有限制,所有页面都可以抓取。
示例 2:禁止所有爬虫访问任何内容
# 完全封闭的网站(不推荐)
User-agent: *
Disallow: /说明:这会阻止搜索引擎抓取整个网站,通常只在开发环境使用。
示例 3:阻止访问敏感目录
# 保护管理和私有目录
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /config/
Disallow: /backup/
Disallow: /test/说明:这是最常见的配置,保护后台管理系统和敏感文件。
示例 4:允许特定爬虫访问更多页面
# Google 可以访问所有内容
User-agent: Googlebot
Disallow:
# 其他爬虫只能访问公开内容
User-agent: *
Disallow: /admin/
Disallow: /private/说明:给予信任的搜索引擎更多权限。
示例 5:阻止抓取特定文件类型
# 禁止抓取 PDF 和视频文件
User-agent: *
Disallow: /*.pdf$
Disallow: /*.mp4$
Disallow: /*.avi$
Disallow: /*.mov$说明:节省带宽,避免非 HTML 内容被索引。
示例 6:阻止带参数的 URL
# 防止重复内容(电商网站常见)
User-agent: *
Disallow: /*?* # 所有带问号的 URL
Disallow: /*sort=* # 排序参数
Disallow: /*filter=* # 过滤参数
Disallow: /*sessionid=* # 会话 ID说明:避免因参数产生的大量重复页面。
示例 7:允许访问特定子目录
# 默认禁止,但允许访问博客
User-agent: *
Disallow: /
Allow: /blog/
Allow: /articles/
Allow: /public/说明:Allow 指令可以覆盖 Disallow 的限制。
示例 8:包含 Sitemap 的完整配置
# 完整的 SEO 优化配置
User-agent: Googlebot
Disallow: /admin/
Allow: /
User-agent: Baiduspider
Disallow: /admin/
Allow: /
User-agent: bingbot
Disallow: /admin/
Allow: /
# 通用规则
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /config/
Disallow: /*.pdf$
Disallow: /*?*
# 指定站点地图
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-news.xml说明:为不同搜索引擎设置独立规则,并提供 Sitemap 位置。
示例 9:VitePress 项目专用配置
# VitePress 文档站点 robots.txt
User-agent: *
# 允许抓取所有文档
Allow: /guide/
Allow: /api/
Allow: /blog/
# 禁止抓取构建相关和资源文件
Disallow: /assets/
Disallow: /*.map$
Disallow: /*.json$
# 禁止抓取管理页面
Disallow: /admin/
# 添加站点地图
Sitemap: https://your-domain.com/sitemap.xml说明:针对静态站点生成器的优化配置。
示例 10:电商网站配置
# 电商网站 robots.txt
User-agent: *
# 允许抓取商品和分类
Allow: /products/
Allow: /category/
Allow: /brand/
# 禁止抓取会产生重复的页面
Disallow: /search?
Disallow: /*?sort=
Disallow: /*?price=
Disallow: /*?color=
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /wishlist/
# 禁止抓取临时页面
Disallow: /temp/
Disallow: /preview/
# 提交 Sitemap
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-products.xml说明:电商网站的典型配置,重点避免重复内容。
六、高级用法
通配符组合使用
# 复杂匹配场景
User-agent: *
# 匹配所有 .tmp 开头的文件
Disallow: /.tmp*
# 匹配 URL 以 .php 结尾
Disallow: /*.php$
# 匹配包含 admin 的路径
Disallow: /*admin*
# 匹配特定长度的 URL
Disallow: /?????.html # 匹配 5 个字符的文件名Crawl-delay 使用
# 限制爬取速度(减轻服务器压力)
User-agent: *
Crawl-delay: 10
# Google 不适用 Crawl-delay(它有自己的算法)
User-agent: Googlebot
Disallow: /admin/说明:
Crawl-delay: 10表示两次请求之间间隔 10 秒- Google 忽略此指令,使用自己的智能爬取策略
- 适合小型服务器或资源有限的网站
多 Sitemap 配置
# 大型网站可能有多个 Sitemap
User-agent: *
Disallow: /admin/
# 主站点地图
Sitemap: https://example.com/sitemap.xml
# 新闻站点地图
Sitemap: https://example.com/sitemap-news.xml
# 视频站点地图
Sitemap: https://example.com/sitemap-video.xml
# 图片站点地图
Sitemap: https://example.com/sitemap-images.xml
# 移动端站点地图
Sitemap: https://m.example.com/sitemap.xml七、最佳实践
✅ 应该做的
| 实践 | 说明 | 示例 |
|---|---|---|
| 保持简洁 | 只阻止真正需要隐藏的页面 | Disallow: /admin/ |
| 测试配置 | 使用工具验证语法 | Google Search Console |
| 放在根目录 | 确保爬虫能找到 | https://example.com/robots.txt |
| 使用注释 | 方便团队理解配置意图 | # 禁止后台管理 |
| 定期审查 | 随着网站更新调整规则 | 每季度检查一次 |
| 提供 Sitemap | 帮助爬虫发现内容 | 参考 Sitemap.xml 配置指南 |
❌ 不应该做的
| 错误做法 | 问题 | 正确做法 |
|---|---|---|
| 阻止 CSS/JS 文件 | Google 无法正确渲染页面 | 允许抓取资源文件 |
| 依赖 robots.txt 保护隐私 | 恶意爬虫不会遵守 | 使用密码认证 |
| 阻止所有爬虫 | 网站不会被索引 | 只阻止敏感页面 |
| 语法错误 | 爬虫可能误解规则 | 使用验证工具测试 |
| 忘记更新 | 新页面被抓取 | 定期维护配置 |
八、验证与测试
在线验证工具
推荐使用 Google Search Console 的 robots.txt 测试器:
- 访问 search.google.com/search-console
- 选择"robots.txt 测试器"功能
- 实时测试和验证配置
本地测试方法
# 1. 访问 robots.txt 文件
curl https://example.com/robots.txt
# 2. 检查文件是否在根目录
# 正确:https://example.com/robots.txt
# 错误:https://example.com/public/robots.txt
# 3. 验证 HTTP 状态码
curl -I https://example.com/robots.txt
# 应返回 200 OK九、常见问题解答
Q1: robots.txt 能保护我的文件不被访问吗?
不能! robots.txt 只是君子协定,只能阻止合规的搜索引擎爬虫。恶意爬虫、黑客工具不会遵守这个规则。
正确做法:
- 敏感文件使用密码保护
- 配置服务器权限(.htaccess、Nginx 配置)
- 不要将私密文件放在 Web 可访问目录
Q2: 为什么我的页面在 robots.txt 中被禁止了,但还是被索引了?
原因: 如果其他网站链接到你的禁止页面,Google 仍然可能索引该页面的 URL,尽管不会抓取内容。
解决方案:
# 在 robots.txt 中禁止
Disallow: /private-page.html
# 同时在页面添加 noindex meta 标签
<meta name="robots" content="noindex, nofollow">Q3: 如何彻底阻止网站被索引?
方案一:robots.txt + noindex
User-agent: *
Disallow: /html
<meta name="robots" content="noindex, nofollow">方案二:HTTP 响应头
X-Robots-Tag: noindex, nofollow方案三:密码保护
nginx
# Nginx 配置
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}Q4: 修改 robots.txt 后多久生效?
答案:
- Googlebot 通常会每天重新抓取 robots.txt
- 重大更改可通过 Search Console 请求重新抓取
- 一般 24-48 小时内生效
十、记忆口诀
robots.txt 配置歌诀:
根目录下放文件,
爬虫访问它先看。
User-agent 定对象,
Disallow 来阻拦!
Allow 可破禁令,
Sitemap 助索引。
星号通配灵活用,
美元符号匹配尾!
敏感目录要屏蔽,
重复页面别抓取。
CSS JS 别阻挡,
搜索引擎要渲染!
不是安全防火墙,
隐私保护靠密码。
定期审查勤更新,
Search Console 来验证!十一、总结一句话
- 定位: robots.txt = 网站爬虫的行为准则 📜
- 核心: User-agent + Disallow + Allow = 爬取控制三要素 ⭐
- 最佳实践: 只阻止必要页面 + 提供 Sitemap + 定期验证 = SEO 友好配置 ✅
- 注意事项: 不能保护隐私 + 不能防止恶意爬虫 + 需要配合 noindex = 安全防护需多层 🔒