robots.txt 最容易被新手误解。
它不是“隐藏页面”的工具,也不是“让页面不被收录”的稳定方法。它主要告诉搜索引擎爬虫:哪些 URL 可以抓取,哪些 URL 不应该抓取。
如果你把抓取控制、索引控制和访问权限混在一起,很容易误伤重要页面。
robots.txt 放在哪里
robots.txt 必须放在站点根目录。
例如:
https://example.com/robots.txt
它按协议、主机名和端口生效。https://www.example.com/robots.txt 和 https://example.com/robots.txt 不是同一个文件。
最简单的文件长这样:
User-agent: *
Allow: /
这表示对所有爬虫开放抓取。
基础写法
常见指令有三类:
User-agent: *
Disallow: /admin/
Allow: /admin/help/
Sitemap: https://example.com/sitemap.xml
含义是:
User-agent指定规则适用的爬虫;Disallow指定不允许抓取的路径;Allow可以在禁止目录里放行更具体的路径;Sitemap告诉爬虫 sitemap 地址。
路径匹配要非常谨慎。Disallow: / 会阻止整站抓取;Disallow: 空值则表示没有禁止路径。
robots.txt 能做什么
适合用 robots 处理的场景:
| 场景 | 是否适合 | 原因 |
|---|---|---|
| 阻止后台目录被抓取 | 适合 | 后台页面通常不需要搜索引擎访问 |
| 阻止搜索结果页、筛选参数被大量抓取 | 视情况适合 | 可减少低价值 URL 抓取 |
| 声明 sitemap 位置 | 适合 | 帮助发现 sitemap |
| 阻止页面被索引 | 不适合 | robots 管抓取,不稳定控制索引 |
| 保护私密内容 | 不适合 | robots 不是访问权限系统 |
如果页面真的不能公开,应该用登录、权限、服务器鉴权或直接移除内容,而不是依赖 robots。
robots.txt 和 noindex 的区别
这是最关键的区别:
robots.txt:控制爬虫能不能抓取 URL;noindex:告诉搜索引擎不要把页面放进索引;- 密码或权限:控制用户和爬虫能不能访问内容。
如果你用 robots 阻止页面抓取,搜索引擎可能看不到页面里的 noindex。所以“robots 禁止 + 页面 noindex”不是一个可靠组合。
如果目标是让页面退出索引,通常应该允许抓取页面,并在页面上使用 noindex,等搜索引擎重新抓取后生效。
最常见的误伤
1. 上线时忘记移除整站禁止
开发或测试环境常见:
User-agent: *
Disallow: /
如果正式站也带着这段上线,重要页面可能无法被正常抓取。
2. 禁止资源文件导致页面渲染异常
不要随便禁止 CSS、JS 或图片资源。搜索引擎需要这些资源理解页面是否可用、是否移动端友好。
3. 参数页全部放开
筛选、排序、搜索结果页可能制造大量重复 URL。是否用 robots 控制,要结合页面价值、canonical、noindex 和站内链接一起判断。
4. 用 robots 隐藏敏感 URL
robots 文件是公开可访问的。把敏感路径写进去,反而可能暴露路径存在。
一套发布前检查
上线或改版前,至少检查:
- 正式域名的
robots.txt是否能访问; - 是否误写
Disallow: /; - 重要栏目、文章、产品页是否可抓取;
- CSS、JS、图片资源是否没有被误封;
- sitemap 地址是否正确;
- 测试环境和正式环境规则是否分开;
- GSC 或测试工具里抽查核心 URL。
三类读者的盲点
SEO 新手常见盲点是把 robots 当成隐藏页面工具,以为禁止抓取就等于不会出现在搜索结果里。
有一定经验的人会写规则,但容易忽略路径匹配、主机名差异和资源文件误伤。
更资深的人需要理解抓取控制和索引控制的边界,把 robots、noindex、canonical、权限和 sitemap 放在同一套决策里。
一个判断口诀
想减少爬虫访问某类 URL,用 robots。
想让页面不进入索引,用 noindex。
想合并重复 URL 信号,用 canonical 或重定向。
想保护私密内容,用权限系统。
这四件事不要互相替代。