robots屏蔽写错毁全站:一个分号让收录量归零的血泪教训

去年半夜接到个紧急求助,一个电商站收录量一夜归零,老板急得要报警。排查了2小时,发现是程序员改robots.txt时把”User-agent: “写成了”User-agent:;”,就多个分号,百度整站不抓了。

robots.txt这玩意看着简单,写错就是灾难。今天把踩过的坑和正确写法全讲清楚。

robots.txt到底控制什么

robots.txt是给蜘蛛看的”通行规则”,告诉它哪些路径能抓哪些不能抓。注意是”建议”不是”强制”,恶意的爬虫根本不理你,但百度谷歌这些正规军是遵守的。

核心就三个指令:User-agent指定蜘蛛,Disallow禁止抓取,Allow允许抓取。

我见过最离谱的5个错误配置

错误1:把所有蜘蛛都禁了

User-agent: *
Disallow: /

这是最致命的,整站全禁。一般是无意间配的,比如从测试环境复制到生产没改回来。

错误2:路径写错导致误伤

User-agent: *
Disallow: /a

本来只想屏蔽/admin,结果写成了/a,所有以a开头的路径全被禁,比如/article、/about全中招。

错误3:大小写不分

User-agent: *
Disallow: /Admin

Linux服务器路径区分大小写,但百度蜘蛛抓取时不一定按你预期来,/admin和/Admin可能都被匹配或都不匹配。建议统一小写。

错误4:通配符乱用

User-agent: *
Disallow: /*?

这个写法会屏蔽所有带问号的URL,包括必要的筛选页、搜索页。如果不是刻意为之,会误伤大量页面。

错误5:Crawl-delay设太大

User-agent: Baiduspider
Crawl-delay: 30

Crawl-delay是控制抓取间隔的,设成30秒意味着蜘蛛每30秒才抓一个页面,一天最多抓2880个。大站这么配等于自废武功。

正确的robots.txt模板

下面是我给不同类型站点用的模板,直接抄就行。

内容站/资讯站模板

User-agent: *
Allow: /
Disallow: /admin/
Disallow: /search?
Disallow: /*?page=
Disallow: /tag/*/page/

Sitemap: https://www.example.com/sitemap.xml

电商站模板

User-agent: *
Allow: /
Disallow: /cart
Disallow: /checkout
Disallow: /user/
Disallow: /search?sort=
Disallow: /*?filter=
Disallow: /*?price=

User-agent: Baiduspider
Crawl-delay: 1

Sitemap: https://www.example.com/sitemap.xml

后台管理系统模板

User-agent: *
Disallow: /

User-agent: Baiduspider
Disallow: /

后台系统本来就不该被收录,整站禁掉。

robots屏蔽范围对照表

不同写法对应的屏蔽范围,写之前对照看:

写法 屏蔽范围 适用场景
Disallow: / 整站 测试环境、后台
Disallow: /admin/ /admin/下所有页面 后台目录
Disallow: /*? 所有带参数的URL 动态页面
Disallow: /*.php$ 所有php文件 非内容文件
Disallow: /a /a开头的所有路径 精确目录屏蔽
Disallow: /a/ 仅/a/目录下 单个目录屏蔽
Allow: /a/ 允许/a/目录 配合Disallow用

配完robots必须做的验证

写完robots.txt别就完事了,必须用百度站长平台的”robots检测工具”验证一下。我每次配完都会跑一遍,确认没有误伤重要页面。

验证步骤

  1. 上传robots.txt到网站根目录
  2. 登录百度搜索资源平台
  3. 进入”网站设置”→”robots检测”
  4. 输入要测试的URL,看是否被屏蔽
  5. 检查抓取频次是否异常

那个分号事故的复盘

回到开头那个事故,复盘一下为什么会出问题:

  • 程序员用SSH直接改文件,没走测试环境
  • 改完没验证,直接上线
  • 百度蜘蛛当晚抓取时解析失败,按最保守策略整站不抓
  • 第二天site域名发现收录量显示为0(其实是临时下线)

修复方法很简单,改回正确写法后去百度站长平台”抓取诊断”触发重新抓取,48小时后收录量恢复。

避坑清单

  1. robots.txt改完必须用检测工具验证,别凭感觉
  2. Disallow路径后面加斜杠和不加斜杠含义不同,/admin和/admin/是两回事
  3. Crawl-delay别设超过5秒,大站建议1秒以内
  4. Sitemap地址必须写在robots里,方便蜘蛛发现
  5. 测试环境的robots.txt必须Disallow: /,别让测试站被收录
  6. 别用robots.txt屏蔽已收录的页面,要用410状态码或301跳转,robots只是不抓不代表删除索引