robots.txt 怎么写才对:语法、放置位置和那些坑
一篇讲清楚 robots.txt 的实战文章,从 User-agent、Allow、Disallow、Sitemap 四个指令讲到放置位置和 SEO 影响,还会戳破它只是君子协定,挡不住坏爬虫这件事。
robots.txt 怎么写才对:语法、放置位置和那些坑
我接手过一个上线两周还没被收录的站点,翻了半天发现根目录那份 robots.txt 第一行就是 Disallow: /,整站被自己拦在门外。这种事比想象中常见,因为 robots.txt 看着简单,真正理解它在做什么的人却不多。这篇把语法、放置、SEO 和最容易踩的坑一次说清楚。
robots.txt 到底是什么
它是放在网站根目录的一份纯文本文件,告诉爬虫哪些路径可以抓、哪些不要抓。注意这个动词:是「告诉」,不是「强制」。robots.txt 是一份君子协定,守规矩的爬虫(Googlebot、Bingbot、GPTBot)会读它并遵守,不守规矩的爬虫直接无视。
所以它从来不是访问控制手段。任何人在浏览器里输入被 Disallow 的 URL 照样能打开页面,你只是请求爬虫别去抓,不是把门锁上。真要锁门,得靠服务端鉴权、密码或者 WAF 规则。
四个核心指令
robots.txt 的语法只有几个关键词,组合起来就是全部:
- User-agent:指定这条规则对哪个爬虫生效。
User-agent: *代表所有爬虫,User-agent: Googlebot只对 Google 主爬虫生效。 - Disallow:禁止抓取的路径。
Disallow: /admin/屏蔽整个 admin 目录,Disallow: /屏蔽全站,空值Disallow:表示什么都不禁止。 - Allow:在被禁路径里单独放行某个子路径。Googlebot 和 Bingbot 遵守「最长匹配优先」,更具体的路径胜出。
- Sitemap:声明 sitemap.xml 的完整 URL,放在文件任意位置,通常压在最底部。
一个 User-agent 分组从它那行开始,到下一个 User-agent 行之前结束,中间的 Allow / Disallow 都归这一组管。
一份真实的 robots.txt 长这样
假设一个 WordPress 商城,想屏蔽后台和筛选页、放行插件的 AJAX 接口、单独让一份公开白皮书可被收录,生成出来是这样:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /downloads/
Allow: /downloads/whitepaper-2026.pdf
Disallow: /*?orderby=
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
Sitemap: https://example.com/sitemap.xml
读一遍就清楚:所有爬虫不许进 /wp-admin/,但 admin-ajax.php 例外放行(否则购物车和结算会坏);/downloads/ 整体屏蔽,唯独那份白皮书 PDF 放行;带 ?orderby= 的筛选 URL 一律不抓,省爬虫预算;GPTBot 和 CCBot 这两个训练爬虫被整站拒绝;最后一行告诉所有人 sitemap 在哪。这种带模板和实时预览的活,我一般直接用 robots.txt 生成器 点几下出文件,比手敲不容易漏分号漏斜杠。
放在哪里才生效
只有一个位置:网站根目录,也就是 https://example.com/robots.txt。爬虫只会去根目录找这一个文件,放子目录里(比如 /blog/robots.txt)完全无效,爬虫根本不看。
还有两点容易忽略:robots.txt 是按 host 区分的,example.com 和 www.example.com 是两个不同的 host,各自需要一份;http 和 https 也分开。如果你做了域名跳转,确认跳转后的规范域名下那份是对的。
最容易踩的三个坑
第一个最致命:在全局组里手滑写了 Disallow: /,把整站从索引里抹掉。上传前一定重读一遍 User-agent: * 那一组,再去 Search Console 测几个线上 URL 确认能抓。
第二个是误解 Disallow 的作用。很多人以为 Disallow 能让页面从搜索结果里消失,其实不能。被屏蔽的 URL 只要有外链,照样可能裸排名(标题在、没摘要),因为 Google 知道这个 URL 存在,只是没被允许读内容。真想让页面下架,要用 <meta name="robots" content="noindex"> 标签,而这又要求页面本身可被抓取才能读到这条指令。两者解决的是不同问题,别混用。
第三个是漏掉 Sitemap 那一行。Google 和 Bing 从各自站长工具读 sitemap,确实不依赖 robots.txt,但 DuckDuckGo、小型搜索引擎、Internet Archive 这些只能从 robots.txt 发现你的 sitemap。一行的成本,而且每个 SEO 审计工具都会看这个文件。
robots.txt 和 SEO 的真实关系
它对 SEO 的价值主要在「爬虫预算」上。大站有成千上万个低价值 URL(站内搜索结果、分页、筛选组合),放任爬虫抓这些会浪费配额,真正重要的页面反而抓得慢。用 Disallow 把这些噪音路径挡掉,爬虫预算就集中到该收录的内容上。
但别指望它做它做不到的事。它不提升排名、不替代 noindex、更挡不住坚持要爬的坏爬虫。配合 meta 标签生成器 把 noindex、canonical 这些页面级指令补齐,才是完整的收录控制方案。robots.txt 管「抓不抓」,meta 标签管「收不收」,两层各司其职。
至于新文件多久生效:Google 对每个 host 的 robots.txt 缓存最长 24 小时,通常几小时内就读到新版,想强制刷新可以在 Search Console 的网址检查里手动提交 robots.txt 的 URL。
Made by Toolora · Updated 2026-06-13