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检测工具”验证一下。我每次配完都会跑一遍,确认没有误伤重要页面。
验证步骤
- 上传robots.txt到网站根目录
- 登录百度搜索资源平台
- 进入”网站设置”→”robots检测”
- 输入要测试的URL,看是否被屏蔽
- 检查抓取频次是否异常
那个分号事故的复盘
回到开头那个事故,复盘一下为什么会出问题:
- 程序员用SSH直接改文件,没走测试环境
- 改完没验证,直接上线
- 百度蜘蛛当晚抓取时解析失败,按最保守策略整站不抓
- 第二天site域名发现收录量显示为0(其实是临时下线)
修复方法很简单,改回正确写法后去百度站长平台”抓取诊断”触发重新抓取,48小时后收录量恢复。
避坑清单
- robots.txt改完必须用检测工具验证,别凭感觉
- Disallow路径后面加斜杠和不加斜杠含义不同,/admin和/admin/是两回事
- Crawl-delay别设超过5秒,大站建议1秒以内
- Sitemap地址必须写在robots里,方便蜘蛛发现
- 测试环境的robots.txt必须Disallow: /,别让测试站被收录
- 别用robots.txt屏蔽已收录的页面,要用410状态码或301跳转,robots只是不抓不代表删除索引