你的网站被搜索引擎漏抓了?先别急着改代码,快去看看 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.js 和 style.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/login、Disallow: /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
检查两件事:
- 找找有没有
Disallow: /或Disallow: /后面跟着你最近上线的新栏目(比如/ai-tools/) - 确认最后一行是不是
Sitemap:+ 你真实的 sitemap 地址
如果发现问题,直接编辑服务器上的文件(或通过 WordPress 插件 / 主机后台),保存。然后去 Google 搜索控制台 → 抓取 → robots.txt 测试工具 里验证,再点“提交更新”。全程不超过 10 分钟——但很可能让你下个月多出几十个有效收录。