robots.txt 是成本最低、破坏力最大的一个文件。几行文字,写错就能让整站从搜索结果里消失,而且很多人排查一周都想不到是它。
一、六种致命写法
1. Disallow: /
屏蔽整站。常见于测试环境,上线时忘了删。
2. Disallow: /*
有些站长以为这只屏蔽某个目录,实际也是屏蔽全部。
3. User-agent 写错
User-agent: Baiduspider
Disallow: /
这条只屏蔽百度,谷歌照样能抓。很多人因此误判"谷歌收录正常,百度不收录是百度的问题"。
4. 规则顺序错误
Disallow: /
Allow: /public/
Allow 不能覆盖更宽泛的 Disallow。顺序和作用范围都要注意。
5. 少了斜杠
Disallow: article
这会屏蔽所有以 article 开头的路径,包括 /articles-guide。要写 Disallow: /article/。
6. 文件返回 404 或 500
robots 返回 5xx 时,蜘蛛会暂停抓取;返回 404 时,视为"没有限制",可以抓。但频繁 5xx 会降低抓取频次。
二、正确的语法
User-agent: *
Disallow: /admin/
Disallow: /search
Allow: /public/
Sitemap: https://example.com/sitemap.xml
几个要点:
- 路径区分大小写。
- 每行一个规则,不要用逗号。
- 注释用 #,单独一行。
- 文件必须是纯文本,编码 UTF-8。
- 放在域名根目录,即
https://example.com/robots.txt。
三、什么时候该屏蔽
| 路径 | 是否屏蔽 |
|---|---|
| 后台目录 | 是 |
| 搜索结果页 | 是 |
| 购物车/结算 | 是 |
| 带参数的筛选页 | 是 |
| CSS/JS | 否(谷歌需要渲染页面) |
| 图片 | 否(否则图片搜索无流量) |
最后两行常被写错。屏蔽 CSS/JS 会让谷歌无法正确渲染页面,反而影响排名。
四、改错之后怎么恢复
- 修正 robots.txt,确认能正常访问。
- 在搜索资源平台重新提交 robots 和 sitemap。
- 用"抓取诊断"测几个页面,确认蜘蛛能抓到。
- 观察抓取频次,通常三到七天恢复。
- 如果两周后仍不收录,检查是否有其他问题(noindex、服务器、内容质量)。
注意:已经被"记住"的屏蔽规则不会立刻失效,需要等蜘蛛重新读取。所以改完要主动提交。
五、怎么避免这类事故
- 测试环境和生产环境用不同的 robots 配置,部署时自动切换。
- 上线检查清单里加一条"确认 robots 没有 Disallow: /"。
- 把 robots.txt 加入监控,返回码异常时告警。
上线前的三道保险
第一,测试环境和生产环境用不同的 robots 文件,部署脚本自动切换;第二,把 robots.txt 加入监控,返回 200 且内容包含 Sitemap 才算正常;第三,上线检查清单里固定一条"确认没有 Disallow: /"。
这三道保险做过一次,以后就不会再犯。
robots 的部署检查
测试环境和生产环境用不同的 robots 文件,部署脚本自动切换;把 robots.txt 加入监控,返回 200 且内容包含 Sitemap 才算正常;上线检查清单里固定一条“确认没有 Disallow: /”。
这三道保险做过一次,以后就不会再犯。robots 写错,整站可能一篇都收不进去。
上线前搜一遍 robots.txt 里有没有 Disallow: /。一个斜杠,可能让整站从搜索里消失。
常见问题
robots 能阻止收录吗
能阻止抓取,但被屏蔽的 URL 仍可能出现在结果里(只显示 URL 不显示摘要)。要彻底不收录,用 noindex。
robots 和 noindex 哪个优先
如果 robots 屏蔽了页面,蜘蛛读不到 noindex,所以 noindex 不会生效。两者不要同时用在一个页面上。
robots 要多久生效
蜘蛛下次读取时生效,通常几小时到几天。
收录排查的完整顺序,见网站不收录的十四个原因。