robots.txt 是放在域名根目录下的一个纯文本文件,用来告诉各类爬虫哪些地址可以抓、哪些不必抓。它不担保任何结果,也挡不住页面被直接访问,只是把一份建议清单摆在门口。正因为规则简单,很多站点的 robots.txt 都是某次改版或临时处理问题时随手加上几行,之后再没看过。定期把它拿出来逐条核对,是站点运营里成本很低的一件事。
先确认文件位置和可访问性
- 文件只能放在域名根目录下,即 https://你的域名/robots.txt。放在子目录里的同名文件基本不会被识别。
- 直接访问这个地址,确认返回 200,内容类型是纯文本,而不是被 CDN、WAF 或登录页拦截后的验证页面。很多规则失效,问题就出在这一步。
- 返回 404 时,爬虫会按“没有规则”处理,等于全站放开;返回 5xx 时表现也不一致,通常同样偏宽松。如果原本想挡的目录其实一直被访问,先看看文件是不是根本没生效。
- www 与非 www、http 与 https 属于不同主机名,各自的 robots.txt 是独立的一份,别只改了其中一个。
逐条读一遍规则
读规则时重点看四类写法:
- User-agent:一组规则可以对应多个 UA,星号是通配。拼写错误会让整组规则变成没人匹配的摆设。
- Disallow:填的是路径前缀,不是通配符表达式。单独写一个 Disallow:(冒号后留空)表示全部允许,这是常见写法,而不是禁止全部。
- Allow:用于在被禁止的范围内开一个口子,比如整体挡住 /search/,但放行其中的帮助页。
- Sitemap:可以在这里写站点地图地址,方便爬虫顺带发现。也有站点选择只在搜索引擎后台提交,两种做法都行,但要保持一致。
容易被忽略的几种情况
- 不要用 robots.txt 来隐藏后台、测试目录或内部资料。这个文件本身是公开的,写进去等于把地址列了一份清单。这类内容应该靠登录和权限保护。
- 整体屏蔽 CSS、JS、图片目录,会让爬虫拿不到渲染页面所需的资源,反而影响对页面内容的判断。
- 通配符要慎用。Disallow: /*? 会挡掉所有带参数的地址,其中包括正常的筛选页、分页地址和统计参数页,误伤面往往比预想的大。
- 改版后路径发生了变化,旧规则却还留着,可能正好挡住新上线的栏目。
- 测试环境与生产环境如果共用同一份文件模板,注意别把生产规则带过去,也别把测试站的宽松规则带上线。
与站点地图、canonical 的配合
三者的口径最好一致。robots.txt 里明确禁止抓取的地址,通常也没必要再放进站点地图;反过来,如果某个地址通过 canonical 指向了另一个页面,又确实不需要被抓,可以在 robots 里挡掉,但要清楚挡掉之后爬虫就读不到那个 canonical 声明了。
另外,noindex 与 Disallow 混用会互相抵消:被 Disallow 的页面,爬虫根本读不到页面里的 noindex 标签。想让某个地址从结果里退出,优先用 noindex 并允许抓取,而不是直接禁止访问。
改完之后怎么验证
- 重新访问文件地址,确认内容已经更新,注意 CDN 缓存可能还在返回旧版本。
- 用搜索引擎提供的抓取测试工具,抽几个关键地址看看是否被允许。
- 在服务器访问日志里观察一到两周,确认原本频繁请求的目录是否安静下来,同时留意有没有重要栏目被一起挡掉。
- 把 robots.txt 纳入改版清单,与重定向、站点地图、主机名规范一起复核,而不是单独处理。
规则生效需要时间,各家爬虫对语法的支持程度也不完全一样,不要把它当成精确的流量开关来用。
robots.txt 的内容通常不长,但影响面不小。建议每个季度花十分钟通读一遍,确认每一条都还符合当前的站点结构,把不再需要的规则删掉。比起不断往上叠加例外,保持一份简短、能读懂的清单更容易长期维护。