robots.txt 放在域名根目录,是蜘蛛进站前最先读的一份说明。它不承诺收录,也不负责排名,唯一的作用是告诉蜘蛛哪些路径不必来。规则本身很简单,但正因为简单,写错了往往不容易被发现——直到某天翻看日志,才发现整站的抓取记录少得可怜。
先确认文件本身能不能被读到
- 位置固定在域名根目录,不能放进子目录,也不能改名。子目录下的同名文件不会生效。
- 正常返回状态码应为 200,内容类型是纯文本。返回 404 时,多数蜘蛛会按「无限制」处理;返回 5xx 或超时,不同蜘蛛的处理方式并不统一,可能暂停一段时间,也可能继续抓,不要拿 5xx 当屏蔽手段用。
- 站点若使用 CDN 或 WAF,确认这个路径没有被拦下。用命令行或抓取测试工具从公网确认,比只看后台配置可靠。
- 文件里用注释说明时,注释符号后的内容蜘蛛会跳过,不会造成影响。
几条常用指令的匹配逻辑
Disallow 是前缀匹配
写 Disallow: /admin 会同时屏蔽 /admin、/admin/、/administer 这类同前缀路径。想精确到目录,结尾补斜杠:Disallow: /admin/。想屏蔽单个文件,写完整路径更稳妥。
想屏蔽整站是 Disallow: /,这条也最危险,被误留在正式站上等于关掉整站入口。上线前建议单独搜一遍这条规则。
Allow 用来在屏蔽区里开口子
当 Allow 与 Disallow 同时命中一条路径时,按最长的那条规则优先;长度相同时,Allow 优先于 Disallow。所以允许规则写得比屏蔽规则更具体,才有意义。比如先屏蔽整个目录,再单独放行其中一个子路径。
Sitemap 声明
Sitemap: 后面接完整网址,可以写多条。这里只是声明位置,属于提示性质,不影响抓取权限,也不等于提交。
通配符与结尾符
部分蜘蛛支持 * 与 $,但各家实现并不完全一致。日常能用具体路径表达清楚的,就别依赖通配符,减少理解偏差。
几个高频写错的地方
- 把不想被索引的页面直接写成 Disallow。屏蔽抓取后蜘蛛读不到页面上的 noindex 指令,页面仍可能以纯链接形式出现在结果里。想让页面不出现,应当允许抓取,再用 noindex 处理。
- 规则里直接写了完整网址,正确写法是路径部分。
- 大小写与实际路径不一致,导致该屏蔽的没屏蔽上。
- 放了好几份 robots.txt,实际只有根目录那一份生效。
- 测试环境或新域名切换时,把屏蔽规则一并带到了正式站。
与 meta robots、X-Robots-Tag 的分工
robots.txt 管的是「能不能抓」;meta robots 标签和 HTTP 响应头里的 X-Robots-Tag 管的是「抓到之后能不能索引」。两者作用在不同环节,不能互相替代。页面级别的精细控制,更适合放在 meta 标签或响应头里。
上线前的自查清单
- 根目录路径可访问,返回 200,内容为纯文本。
- 没有 Disallow: / 这类整站屏蔽残留。
- 需要抓取的目录、CSS 与 JS 资源没有被误屏蔽。样式和脚本被挡,会影响蜘蛛对页面的渲染判断。
- 屏蔽规则统一用路径写法,按目录需要补结尾斜杠。
- Allow 规则足够具体,长度长于对应的 Disallow。
- Sitemap 地址正确且可访问。
- 与页面上的 meta robots、响应头指令的意图不冲突。
- 改完后在服务器日志或抓取测试工具里确认结果,而不是只凭肉眼检查。
robots.txt 只做一件事:划出蜘蛛不必进入的范围。这份文件越短、越具体越省事;凡是能用页面级指令解决的问题,尽量别写进这里。
站点运营中这类基础项不多,但每一条都影响后续所有动作。robots.txt 通常半年都不动,正因为如此,改版、换域名、上测试环境时它最容易被忽略,建议把它固定列进上线检查清单。