本文是一份面向实际网站运维和 SEO 基础管理的 robots.txt 指南。重点不是只给你一份模板,而是讲清楚它能做什么、不能做什么、怎么写才不容易出错,以及如何和 sitemap、noindex、X-Robots-Tag 配合使用。
适用场景
- 控制搜索引擎抓取哪些路径
- 减少无意义页面对爬虫的消耗
- 为站点地图提供入口
- 在 CMS 或 Web 项目里统一输出规则
- 配合 noindex、meta robots 和 X-Robots-Tag 做索引控制
robots.txt 是什么
robots.txt 是放在网站根目录下的文本文件,例如:
https://www.example.com/robots.txt它属于 Robots Exclusion Protocol 的一部分,作用是告诉爬虫哪些路径允许抓取、哪些路径不要抓取。
重要前提:
- 它主要影响“抓取”
- 它不是安全机制
- 它不能防止敏感内容被人直接访问
核心结论
如果你只记住一件事,那就是:
- robots.txt 是给爬虫看的,不是给攻击者看的
因此:
- 不要用它隐藏真正敏感的管理页面
- 不要把私密地址当作安全边界
- 需要真正禁止访问时,应使用认证、授权、IP 白名单或服务器级限制
基本语法
robots.txt 每一行通常由字段和值组成:
field: value常见规则项:
- User-agent
- Allow
- Disallow
- Sitemap
注释使用 #:
# 这是注释最小可用模板
一个最基础、最常见的模板如下:
User-agent: *
Disallow:
Sitemap: https://www.example.com/sitemap.xml含义:
- User-agent: * 表示适用于所有爬虫
- Disallow: 为空表示不禁止抓取任何内容
- Sitemap: 给出站点地图地址
这是很多正常公开站点的起点配置。
常见写法
允许全部抓取
User-agent: *
Disallow:禁止全部抓取
User-agent: *
Disallow: /屏蔽后台目录
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /api/仅允许某些路径
User-agent: *
Disallow: /
Allow: /public/
Allow: /assets/说明:
- 当规则冲突时,具体实现会根据匹配优先级判断
- 对 Google 来说,Allow 和 Disallow 都是有效字段
- 规则写得越复杂,越容易出错,尽量保持简洁
robots.txt 能做什么
它最适合做这些事:
- 减少爬虫抓取压力
- 避免低价值页面占用抓取预算
- 告诉搜索引擎站点地图位置
- 在迁移、测试、临时环境里统一阻止抓取
robots.txt 不能做什么
它不能:
- 阻止用户直接访问 URL
- 作为登录或权限控制替代方案
- 彻底阻止敏感内容被搜索引擎收录
- 保证所有爬虫都会遵守
MDN 和 Google 都明确说明,这不是安全边界。某些恶意爬虫可能完全无视它。
与索引的关系
这是最容易误解的地方。
1. 阻止抓取,不等于阻止收录
如果一个页面被外部链接大量引用,即使爬虫不能抓取内容,它仍可能在搜索结果中以“URL 级别”形式出现。
2. 想让页面不被索引,应该用别的手段
更合适的方法是:
- 页面级 meta robots
- X-Robots-Tag HTTP 头
- 认证保护
例如:
<meta name="robots" content="noindex, nofollow">或者:
X-Robots-Tag: noindex, nofollow3. 不要让 robots.txt 和 noindex 打架
如果你想让搜索引擎看到 noindex,但你又在 robots.txt 里把该页面完全禁抓,爬虫就看不到 noindex,索引控制可能失效。
与 sitemap 的关系
robots.txt 常常会放一个或多个 Sitemap 行:
Sitemap: https://www.example.com/sitemap.xml
Sitemap: https://www.example.com/sitemap-images.xml建议:
- sitemap URL 要用绝对地址
- sitemap 中的域名要和站点主域名统一
- 不要把测试环境 sitemap 放到正式站点里
站点级模板
正常公开站点
User-agent: *
Disallow:
Sitemap: https://www.example.com/sitemap.xml后台和接口需要屏蔽
User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /login
Sitemap: https://www.example.com/sitemap.xml测试环境完全禁止抓取
User-agent: *
Disallow: /静态资源站点
如果你的站点主要是公开静态资源,通常可以保持开放,只屏蔽少量管理路径:
User-agent: *
Disallow: /admin/
Disallow: /private/多爬虫规则
你可以针对不同爬虫定义不同规则:
User-agent: Googlebot
Disallow: /private/
User-agent: *
Disallow: /tmp/建议:
- 只有在你确实需要差异化规则时才这么写
- 大多数站点用统一规则就够了
- 规则越复杂,维护成本越高
常见路径约定
在真实项目里,经常会屏蔽这些路径:
- /admin/
- /login
- /user/
- /api/
- /search
- /internal/
- /tmp/
但是否屏蔽,要看业务目标。
例如:
- /search 可能是低价值页面,常常适合屏蔽
- /api/ 可能本来就不该被搜索引擎抓取
- /admin/ 绝大多数情况应屏蔽,但更重要的是服务器级访问控制
文件位置与服务方式
robots.txt 必须放在站点根路径下,搜索引擎会从根路径读取它。
例如:
/robots.txt如果你的网站用了多个子域名,每个主机名都可以有自己独立的 robots.txt:
- example.com/robots.txt
- www.example.com/robots.txt
- api.example.com/robots.txt
注意:
- 不同主机名下的 robots.txt 是独立的
- 主域名和子域名不能混用一份文件来替代
HTTP 状态与编码
建议:
- 返回 200 OK
- 纯文本输出
- UTF-8 编码
常见不要做的事:
- 不要返回 404
- 不要把 robots.txt 重定向到复杂页面
- 不要返回 HTML
生成与维护建议
如果你的站点是 CMS 或 Web 应用,建议把 robots.txt 当作一个“可配置输出项”。
例如在程序里维护:
- 站点主域名
- sitemap 地址
- 环境标识
- 屏蔽路径集合
这样比手工改文件更稳定。
你当前仓库里已经有 robots 字段配置,这说明它很适合做成站点级动态输出,而不只是静态文件。
常见错误
1. 把 robots.txt 当安全机制
这是最常见错误。robots.txt 不会保护你的后台,只会告诉爬虫怎么抓取。
2. 语法写错
常见问题:
- 字段拼写错误
- 冒号后面多了奇怪字符
- 路径没有以 / 开头
- Sitemap 写成了相对路径
3. 放错目录
必须在网站根目录下:
/robots.txt不是:
/static/robots.txt除非你的 Web 服务器做了特殊路由映射。
4. 以为 Disallow 后内容不会被收录
不一定。抓取和索引不是一回事。
5. Disallow: / 用在正式站点
这会让整个站点对爬虫不可抓取,通常只适合测试环境或临时封站。
检查清单
在上线前,建议确认以下事项:
- robots.txt 能在根路径访问
- 返回状态码是 200
- 内容是纯文本
- sitemap URL 正确
- 屏蔽路径符合业务预期
- 不把敏感数据当作“靠 robots.txt 保护”
推荐实践
一个稳妥的默认策略是:
- 公开内容允许抓取
- 管理后台和临时接口屏蔽抓取
- sitemap 只暴露正式站点地址
- 真正敏感的内容使用认证或访问控制
最小可用示例
User-agent: *
Disallow: /admin/
Disallow: /api/
Sitemap: https://www.example.com/sitemap.xml结论
robots.txt 是站点对爬虫的“公开规则声明”,最适合用于:
- 控制抓取
- 降低无效爬行
- 暴露 sitemap
- 配合索引控制策略使用
但它不适合:
- 做安全隔离
- 保护私密内容
- 替代认证和权限系统