Skip to content

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-agentUser-agent: <爬虫名称>指定适用的爬虫必需
DisallowDisallow: <路径>禁止抓取的路径可选
AllowAllow: <路径>允许抓取的路径(覆盖 Disallow)可选
Crawl-delayCrawl-delay: <秒数>两次请求之间的间隔时间可选
SitemapSitemap: <URL>指定站点地图位置可选

特殊符号说明

符号含义示例
*通配符,匹配任意字符Disallow: /*.pdf$
$匹配 URL 结尾Disallow: /temp$
#注释符号# 这是注释

四、常见爬虫名称(User-agent)

主流搜索引擎爬虫

搜索引擎User-agent 名称说明
GoogleGooglebotGoogle 主爬虫
Googlebot-ImageGoogle 图片爬虫
Googlebot-NewsGoogle 新闻爬虫
Googlebot-VideoGoogle 视频爬虫
百度Baiduspider百度网页爬虫
Baiduspider-image百度图片爬虫
Baiduspider-video百度视频爬虫
BingbingbotBing 搜索爬虫
msnbotMSN 搜索爬虫(旧)
其他Sogou web spider搜狗爬虫
YandexBotYandex 爬虫

通用爬虫标识:

  • * - 匹配所有爬虫
  • 建议针对特定爬虫设置不同规则

五、常用配置示例

示例 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 测试器:

本地测试方法

# 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 = 安全防护需多层 🔒
最近更新