Robots.txt 是放置在网站根目录下的一个纯文本文件,它的作用是向搜索引擎爬虫说明:哪些页面可以抓取,哪些页面应避开。它属于一种君子协议,而非安全防线。善用这个文件,可以让爬虫集中精力收录高质量内容,同时减轻服务器压力。
搜索引擎爬虫在访问站点时,第一步就是请求根目录下的 robots.txt 文件。只要该文件存在,且爬虫愿意遵守协议,就会按照指令来规划抓取范围。如果文件缺失,爬虫会默认所有公开链接都可以抓取。
实际应用中,这个文件常被用来实现以下目的:屏蔽后台或管理页面、过滤标签聚合页或搜索结果页这类低价值页面,也可以降低抓取频率来节省服务器带宽。不过要特别留意,正规搜索引擎会遵守规则,而恶意采集程序根本不会理会这个文件,因此千万别把它当作保护隐私或安全的工具。
整个文件由一条或多条记录组成,每条记录以 User-agent 开头,后面接着相应的指令。下面这几个指令是必须吃透的基础知识:
下面的写法结构清晰,方便后续维护:
User-agent: *
Disallow: /tmp/
Disallow: /private/
Allow: /private/special.html
Sitemap: https://www.example.com/sitemap.xml
这段规则的效果是:所有爬虫都不能抓取 tmp 和 private 这两个目录,但在 private 里的 special.html 页面会被单独放行,同时爬虫还能通过 Sitemap 指令找到站点地图。
配置 robots.txt 看起来简单,实践中却经常因为细节疏忽导致效果与预期不符。下面几个场景值得重点关注:
易踩坑的细节:路径匹配遵循前缀原则。Disallow: /news 会把 /newsletter 也一并屏蔽掉,想要精准控制就写 /news/。
除了基本的指令含义,文件书写规范上还有几个容易被忽视的点,稍不留神就会让规则失效或误伤。
因此,每次修改完文件后,建议用站长平台自带的 robots 检测工具去测试,去验证不同路径的实际匹配结果,这比人工推断要稳妥得多。
没有固定时间。普通情况几小时到一两天内就会更新,但对于已经抓取过的页面,搜索引擎可能沿用缓存规则一段时间。也可以主动通过站长平台提交更新,能加快生效速度。
两者作用机制完全不同。Disallow 是从抓取层面禁止爬虫访问页面,但页面可能被外部链接或 sitemap 间接发现;noindex 是一种页面级元标签,告诉搜索引擎不要索引该页面,但爬虫依然会访问。想彻底阻止内容出现在搜索结果中,通常需要结合使用。
会。如果站点做了 301 跳转,爬虫会在请求根目录时跟着跳转,所以 robots.txt 应该放在最终跳转的域名根目录下,同时也要保证跳转前域名的 robots 文件本身没有限制这份跳转操作,否则会出现抓取异常。
配置一份好用的 robots.txt 并不复杂,但需要细心对待每条指令及其作用范围。写给自己的文件,结构化分组写清楚;写给爬虫的文件,则务必保持语法严格和路径准确。建议从现在开始,重新检查一遍根目录当前的 robots.txt 文件,确认它没有误伤重要页面,并用在线工具验证每条规则的匹配结果。把测试当作例行环节,能帮你避开绝大多数因细节导致的收录问题。