你的网站被搜索引擎漏抓了?先别急着改代码,快去看看 robots.txt

你那篇写了三天的深度干货,发出去半个月,搜索控制台里还是“0 收录”。内链检查了,sitemap 提交了,甚至手动请求了收录——结果呢?首页都排不上。最后随手点开 https://你的域名/robots.txt,发现里面赫然写着:Disallow: /
不是段子,上周刚帮一个做独立站的设计师朋友揪出这个坑。他连屏蔽 JS 的规则都加进去了,搜索引擎打开页面一看:白屏。

为什么你的 robots.txt 会"杀死"一半的页面?

很多人把 robots.txt 当成“复制粘贴清单”,网上抄一段就往根目录一扔。结果核心页面全被挡在门外,爬虫连分类页都摸不到。

我接手过一个家居电商站,老板说新品怎么都搜不到。打开 robots.txt,第一行就是:
Disallow: /product/
——所有产品页,一个不剩。

更隐蔽的问题藏在通配符里。比如有人写:
Disallow: /*.php$
本意是拦住动态参数页,但首页 index.php 也中招了。搜索引擎直接跳过整站,连试都不试。

还有大小写陷阱。你写了 Disallow: /Admin/,可真实路径是 /admin/。对搜索引擎来说,这是两个完全不同的地址——屏蔽等于没屏蔽。

如何用 3 个步骤写出零错误的 robots.txt?

第一步:先列清楚哪些必须被抓,哪些最好别碰
必须抓的:文章页(/post/)、产品页(/p/)、分类页(/category/
最好别碰的:后台(/wp-admin/)、登录页(/login)、搜索结果页(/search?q=)、带分页参数的列表页(/list?page=

第二步:用最直白的写法,别炫技
一行一条规则,路径写全、写准。
✅ 好的写法:Disallow: /wp-admin/
❌ 别这么干:Disallow: /*admin* —— 连 about-admin-team 这种公开文章页也会被误杀

第三步:测试,不是“看看就行”
写完别直接上传。去 Google 搜索控制台(或 Bing Webmaster Tools)的 robots.txt 测试工具里跑一遍。重点看:你最想被收录的 3 个页面,状态是不是“允许”。

我见过把半角冒号写成全角 的——Disallow: /private/。整条规则失效,该拦的全放行。

这 3 个"隐形杀手"正在破坏你的 SEO

第一个杀手:把 JS 和 CSS 一起封了
有人为了“省流量”,写了 Disallow: /assets/。结果这个文件夹里全是 main.jsstyle.css。搜索引擎加载页面时:HTML 有,样式和交互全无。从上一次核心算法更新后,这类页面的展现明显变少。

第二个杀手:只管 Googlebot,忘了别人
你写了 User-agent: Googlebot,下面跟了一堆 Disallow,但 Bingbot 来的时候,没匹配到任何规则,默认全部放行。如果你有测试环境(比如 /staging/),又不想被任何爬虫看到,得写两遍:

User-agent: Googlebot  
Disallow: /staging/  
User-agent: bingbot  
Disallow: /staging/  

或者更简单:User-agent: * —— 统一管住所有爬虫。

第三个杀手:忘了告诉搜索引擎“你家地图在哪”
在 robots.txt 最后加一行:
Sitemap: https://你的域名/sitemap.xml
这不是锦上添花。每次爬虫来读 robots.txt,顺手就把 sitemap 地址记下了。我帮一个知识付费站加了这行,两周后新文章平均收录时间缩短了不少。

如何优雅地处理"不得不屏蔽"的页面?

有些页面真不能让爬虫进,比如用户后台、临时测试页、无限翻页的 ?page=999。但粗暴 Disallow: /user/ 可能连用户发布的公开教程也一起挡了。

更稳妥的做法是:

  • 先精准拦截:Disallow: /user/loginDisallow: /user/settings
  • 再单独放行有价值的内容:Allow: /user/*/posts/Allow: /user/*/articles/

另一个实用技巧是 Crawl-delay。如果你的服务器经常 502,可以加:
Crawl-delay: 5
注意:只有部分爬虫(如 Bing、Yandex)认这个指令,Google 不支持。所以别指望它救 Google 收录,只当是给其他爬虫的“减速提示”。

为什么你的 robots.txt 需要"版本管理"?

没人会改完 robots.txt 就删掉备份。但现实是:很多人改完就丢一边,直到某天发现新上线的 /blog/ 目录死活不收录——回头翻配置,才发现里面还躺着一行 Disallow: /blog/,是去年迁移旧系统时留下的“遗物”。

还有一个真实案例:团队三人轮值维护网站,某天有人删掉了 Sitemap: 行,没人通知、没留记录。结果整站新内容收录速度慢了一大截,排查了三天才定位到。

建议你把它当代码对待:

  • 每次修改,在文件顶部加注释,比如 # 2024-06 更新:放开 /resources/ 下所有 PDF
  • 如果用 Git,就 commit 进仓库;如果不用,至少本地存个带日期的副本

今天就能执行的 1 个操作

现在,立刻打开浏览器,输入:
https://你的域名/robots.txt

检查两件事:

  1. 找找有没有 Disallow: /Disallow: / 后面跟着你最近上线的新栏目(比如 /ai-tools/
  2. 确认最后一行是不是 Sitemap: + 你真实的 sitemap 地址

如果发现问题,直接编辑服务器上的文件(或通过 WordPress 插件 / 主机后台),保存。然后去 Google 搜索控制台 → 抓取 → robots.txt 测试工具 里验证,再点“提交更新”。全程不超过 10 分钟——但很可能让你下个月多出几十个有效收录。