站点运营

站点运营:robots.txt 自查,别让一条规则挡住整站

robots.txt 是蜘蛛进站前读的第一份说明文件。写错一条规则,可能让整站被挡在门外;写得含糊,又会让该抓的页面被顺带屏蔽。这篇整理了一份自查思路:从文件位置、语法匹配,到与 meta robots、X-Robots-Tag 的分工,逐项确认。

站点运营

站点运营:robots.txt 自查,别让一条规则挡住整站

robots.txt 放在域名根目录,是蜘蛛进站前最先读的一份说明。它不承诺收录,也不负责排名,唯一的作用是告诉蜘蛛哪些路径不必来。规则本身很简单,但正因为简单,写错了往往不容易被发现——直到某天翻看日志,才发现整站的抓取记录少得可怜。

先确认文件本身能不能被读到

  • 位置固定在域名根目录,不能放进子目录,也不能改名。子目录下的同名文件不会生效。
  • 正常返回状态码应为 200,内容类型是纯文本。返回 404 时,多数蜘蛛会按「无限制」处理;返回 5xx 或超时,不同蜘蛛的处理方式并不统一,可能暂停一段时间,也可能继续抓,不要拿 5xx 当屏蔽手段用。
  • 站点若使用 CDN 或 WAF,确认这个路径没有被拦下。用命令行或抓取测试工具从公网确认,比只看后台配置可靠。
  • 文件里用注释说明时,注释符号后的内容蜘蛛会跳过,不会造成影响。

几条常用指令的匹配逻辑

Disallow 是前缀匹配

写 Disallow: /admin 会同时屏蔽 /admin、/admin/、/administer 这类同前缀路径。想精确到目录,结尾补斜杠:Disallow: /admin/。想屏蔽单个文件,写完整路径更稳妥。

想屏蔽整站是 Disallow: /,这条也最危险,被误留在正式站上等于关掉整站入口。上线前建议单独搜一遍这条规则。

Allow 用来在屏蔽区里开口子

当 Allow 与 Disallow 同时命中一条路径时,按最长的那条规则优先;长度相同时,Allow 优先于 Disallow。所以允许规则写得比屏蔽规则更具体,才有意义。比如先屏蔽整个目录,再单独放行其中一个子路径。

Sitemap 声明

Sitemap: 后面接完整网址,可以写多条。这里只是声明位置,属于提示性质,不影响抓取权限,也不等于提交。

通配符与结尾符

部分蜘蛛支持 * 与 $,但各家实现并不完全一致。日常能用具体路径表达清楚的,就别依赖通配符,减少理解偏差。

几个高频写错的地方

  1. 把不想被索引的页面直接写成 Disallow。屏蔽抓取后蜘蛛读不到页面上的 noindex 指令,页面仍可能以纯链接形式出现在结果里。想让页面不出现,应当允许抓取,再用 noindex 处理。
  2. 规则里直接写了完整网址,正确写法是路径部分。
  3. 大小写与实际路径不一致,导致该屏蔽的没屏蔽上。
  4. 放了好几份 robots.txt,实际只有根目录那一份生效。
  5. 测试环境或新域名切换时,把屏蔽规则一并带到了正式站。

与 meta robots、X-Robots-Tag 的分工

robots.txt 管的是「能不能抓」;meta robots 标签和 HTTP 响应头里的 X-Robots-Tag 管的是「抓到之后能不能索引」。两者作用在不同环节,不能互相替代。页面级别的精细控制,更适合放在 meta 标签或响应头里。

上线前的自查清单

  1. 根目录路径可访问,返回 200,内容为纯文本。
  2. 没有 Disallow: / 这类整站屏蔽残留。
  3. 需要抓取的目录、CSS 与 JS 资源没有被误屏蔽。样式和脚本被挡,会影响蜘蛛对页面的渲染判断。
  4. 屏蔽规则统一用路径写法,按目录需要补结尾斜杠。
  5. Allow 规则足够具体,长度长于对应的 Disallow。
  6. Sitemap 地址正确且可访问。
  7. 与页面上的 meta robots、响应头指令的意图不冲突。
  8. 改完后在服务器日志或抓取测试工具里确认结果,而不是只凭肉眼检查。
robots.txt 只做一件事:划出蜘蛛不必进入的范围。这份文件越短、越具体越省事;凡是能用页面级指令解决的问题,尽量别写进这里。

站点运营中这类基础项不多,但每一条都影响后续所有动作。robots.txt 通常半年都不动,正因为如此,改版、换域名、上测试环境时它最容易被忽略,建议把它固定列进上线检查清单。