SEO
robots.txt 写错了会怎样,怎么检查?
轻则几个页面不被抓取,重则整站从搜索结果里消失。robots.txt 只有几行,错一个字符的代价却可能是几个月的流量。这篇讲清楚它管什么、常见的写错方式,以及怎么用 Search Console 检查。
先说答案:轻则几个页面不被抓取,重则整站从搜索结果里消失。
robots.txt 是放在网站根目录的一个小文本文件,告诉搜索引擎的爬虫哪些路径可以抓、哪些不可以。它通常只有几行,很少有人回头看。也正因为这样,写错了往往几周后才发现,那时流量已经掉下去了。
它管的是抓取
理解 robots.txt,先记住一件事:它控制的是抓取,管不到收录。
Disallow 告诉 Google 别来读这个页面的内容。但如果别处有链接指向这个页面,Google 仍然可能把这个网址收进索引,只是没读过正文,搜索结果里只显示一个网址,没有描述。Search Console 里会标为「已编入索引,尽管遭到 robots.txt 屏蔽」。
反过来也一样。想让一个页面从搜索结果里消失,用 robots.txt 屏蔽它是错的做法。正确的做法是在页面上加 noindex,并且保证 robots.txt 允许抓取这个页面。Google 必须能读到页面,才能看到那个 noindex。
写错了会怎样
按严重程度排:
- 整站不被抓取。 新页面进不了索引,已有页面的内容不再更新,排名慢慢下滑。
- 重要目录被误伤。 博客、产品页、某个语言版本整个不被抓取,而你以为只屏蔽了后台。
- 页面被抓取,但渲染不完整。 屏蔽了 CSS 和 JavaScript,Google 看到的是一个排版错乱、内容缺失的页面,判断它对手机不友好,或者读不到 JavaScript 渲染出来的正文。
- 想屏蔽的没屏蔽住。 后台、搜索结果页、带参数的重复页面照样被抓取,浪费抓取预算,也可能被收录。
常见的写错方式
上线时忘了删测试环境的规则
这是最致命、也最常见的一个。测试站为了不被收录,robots.txt 里写了:
User-agent: *
Disallow: /
意思是所有爬虫,所有路径,都不许抓。上线时把整个站点连同这个文件一起搬到正式域名,整站就对搜索引擎关上了门。
路径按前缀匹配,误伤了别的页面
robots.txt 的路径是按开头匹配的。
Disallow: /blog
这一行屏蔽的不只是 /blog,还有 /blog/、/blog-post、/blogger 这些所有以 /blog 开头的网址。只想屏蔽某个目录,末尾要加斜杠:Disallow: /blog/。
路径还区分大小写。Disallow: /Admin/ 屏蔽不了 /admin/。
通配符用错
Google 支持两个特殊符号:* 匹配任意字符,$ 表示网址到此结束。
Disallow: /*.pdf$
这一行屏蔽所有以 .pdf 结尾的网址。少了 $,/guide.pdf?download=1 这类网址也会被匹配进去,有时这正是你想要的,有时不是。写之前想清楚到底要匹配哪些网址。
屏蔽了 CSS、JavaScript 和图片
早年有人习惯屏蔽 /assets/、/static/、/wp-includes/ 这类目录,觉得爬虫不需要它们。现在 Google 会像浏览器一样渲染页面,这些文件被屏蔽,它看到的就是一个残缺的页面。
为 Googlebot 单独写了一组规则,结果覆盖了通用规则
User-agent: *
Disallow: /admin/
Disallow: /cart/
User-agent: Googlebot
Disallow: /tmp/
很多人以为 Googlebot 会同时遵守两组规则。实际上,爬虫只会遵守最符合自己名字的那一组。上面这样写,Googlebot 只看第二组,/admin/ 和 /cart/ 对它是开放的。给某个爬虫单独写规则时,要把通用规则也抄一份进去。
以为写进 robots.txt 就能生效的指令
Noindex:写在 robots.txt 里,Google 从 2019 年起就不再支持。Crawl-delay:Google 也不认。想降低抓取频率,要靠服务器响应本身。
文件放错了位置
robots.txt 必须放在域名根目录,比如 https://example.com/robots.txt。放在子目录里不会生效。
它还按主机名分别生效。www.example.com、example.com、blog.example.com 各自需要自己的 robots.txt。http 和 https 也是分开的。
服务器出错
robots.txt 返回 404,Google 会当作没有任何限制,所有页面都可以抓。这通常没问题。
但如果 robots.txt 返回 5xx 服务器错误,Google 会认为暂时不能确定规则,为了稳妥会暂停抓取整个站点。网站本身好好的,只是这个文件访问出错,抓取就停了。
怎么检查
1. 直接打开它
在浏览器里访问 你的域名/robots.txt。确认三件事:能正常打开,没有 Disallow: / 这种整站屏蔽,没有你不认识的规则。
2. 看 Search Console 的 robots.txt 报告
在 Search Console 的「设置」里找到「robots.txt」。它会列出 Google 最近一次抓取到的 robots.txt 文件、抓取时间、有没有抓取出错,以及文件里有没有语法问题。你刚改完文件,也可以在这里请求 Google 重新抓取。
3. 用网址检查工具查具体页面
怀疑某个页面被屏蔽,把网址放进「网址检查」。如果它被 robots.txt 挡住了,会直接显示「已被 robots.txt 屏蔽」。
4. 看「网页」报告里的未编入索引原因
在「网页」报告里,留意这两个状态:
- 已被 robots.txt 屏蔽。 点进去看列表,确认里面没有你想被收录的页面。
- 已编入索引,尽管遭到 robots.txt 屏蔽。 这些页面你可能想屏蔽,但它们还是被收录了。要让它们消失,改用
noindex。
5. 改之前先想一遍匹配
每加一条 Disallow,在脑子里过一遍它会匹配哪些网址。拿不准就去网址检查工具里试几个具体的网址。
一份安全的起点
大多数中小网站,robots.txt 只需要这么几行:
User-agent: *
Disallow: /admin/
Disallow: /api/
Sitemap: https://example.com/sitemap.xml
只屏蔽确实不该被抓取的后台和接口路径,其他全部开放,最后写上 sitemap 的地址。规则越少,出错的机会越少。
顺带一提:AI 爬虫
robots.txt 也能控制 AI 公司的爬虫,比如 OpenAI 的 GPTBot、Anthropic 的 ClaudeBot、Perplexity 的 PerplexityBot。有的网站为了防止内容被拿去训练,把它们统统屏蔽。
屏蔽之前想清楚代价。如果你希望自己的内容在 AI 搜索的答案里被引用,屏蔽这些爬虫就等于主动退出了那条渠道。Google-Extended 是个特例:它控制的是内容能否用于 Google 的 Gemini 模型,屏蔽它不影响网页在 Google 搜索里的抓取和排名。
最后
robots.txt 是网站上最短、也最容易被遗忘的文件之一。它很少需要改,但每次网站上线、迁移、改版之后,都值得花一分钟打开看一眼。一行写错的 Disallow,可能要几个月的流量才能补回来。
继续阅读
GSC 显示已编入索引,为什么在 Google 上搜不到?
大多数时候这很正常。编入索引只代表 Google 存下了这个页面,排在第几是另一回事。这篇讲清楚怎么判断页面到底在不在 Google 里,搜不到的几种常见原因,以及每种该怎么办。
新站提交 sitemap 后,多久会被 Google 收录?
首页通常几天到两周,整站要几周到几个月。sitemap 只告诉 Google 有哪些页面,决定收不收、什么时候收的,是页面本身。这篇讲清楚时间线、卡住的常见原因,以及能做的几件事。
网站有展示没有点击,是什么问题?
多数时候这不算故障。它说明 Google 把你的页面放进了结果里,但用户没有选你。原因通常是四类:排名太靠后、展示来自不相关的词、结果不够吸引人、答案已经在搜索页上。这篇讲清楚怎么判断是哪一类,以及每一类该怎么办。