站点根目录下一个几十字的 robots.txt,决定了搜索引擎爬虫能碰哪些页面。它看着简单,写错的后果却不小:该收录的栏目被整段拦住,流量掉了一半还查不出原因;或者以为屏蔽了后台,其实规则写反了,敏感路径照样被爬。动手之前先弄清它的能力边界。
它只是"建议",不是锁
robots.txt 本质上是一份自律声明,合规爬虫会遵守,恶意爬虫完全可以无视。所以真正需要保密的内容,绝不能靠它来防护——后台、私密数据必须用登录鉴权挡住,robots.txt 最多起到"别来爬"的提示作用。把安全寄托在一个文本文件上,是最常见的误解。
基本语法就两条
核心是 User-agent 和 Disallow 这对组合:User-agent 指定对哪个爬虫生效,写星号表示所有爬虫;Disallow 指定不允许访问的路径。这两行构成一个规则块,对不同爬虫可以写多个块,爬虫只会匹配与自己名字对应的那一块以及星号块。另外还有 Allow 用于放开子路径,优先级高于同块的 Disallow。
路径匹配要留意
Disallow 后面的路径是从根目录开始的,且默认按前缀匹配。写 Disallow: /admin 会同时屏蔽 /admin、/admin/login、/administrator,范围比想象中大。想精确控制就在末尾加结束符,或者用通配符:星号匹配任意字符序列,美元符号表示匹配结束位置。规则是从上往下逐条匹配,命中第一条就不再往下走。
最常犯的三个错
第一,把 CSS 和 JS 一起屏蔽了,导致搜索引擎渲染不出页面,误判成低质量内容。第二,写 Disallow: / 想临时关闭整站,结果上线后忘了删,站点长期从搜索结果里消失。第三,多个规则块顺序写反,把星号规则放在具体爬虫规则前面,导致针对特定爬虫的配置根本没生效。
和 sitemap 搭配才完整
robots.txt 负责告诉爬虫"别去哪",但不会告诉它"该去哪"——这个工作由 sitemap 完成。在文件末尾用一行 Sitemap 指令声明地图地址,爬虫一进来就能拿到完整的页面清单,新内容被发现的速度会明显加快,用sitemap生成器可以直接产出标准格式。更细的页面级控制则在页面里用 meta 标签实现,需要禁止某个页面被快照或收录时,用meta标签生成器生成对应标签插进 head,三者分工配合才是完整的方案。