robots.txt 是网站和搜索引擎爬虫之间的约定文件,它明确告诉爬虫哪些内容可以抓取、哪些区域需要避开。如果配置正确,既能节省服务器资源,也能保护后台数据不被索引;一旦出错,轻则屏蔽失效,重则影响整站收录。下面从文件放置、语法规则到冲突判断,逐一拆解容易出问题的地方。
robots.txt 的文件名必须使用小写字母,并且只能存放于网站根目录,例如 https://yourdomain.com/robots.txt。如果文件名大小写写错,或者文件被放到其他目录,爬虫会直接跳过,全部规则形同虚设。
文件内部按行书写规则,每条规则由 User-agent 开头,后跟 Disallow 或 Allow 指令。注释用 # 符号标识,既可放在行尾,也能单独成行,方便后期维护时注明缘由。字段名不区分大小写,但路径值通常严格区分,需保持一致。
User-agent 用于指定规则针对的爬虫对象,Disallow 声明禁止抓取的路径,Allow 则在被禁止的范围内开放特定路径。三者配合可实现对抓取范围的细致管理。
如果希望完全阻止搜索引擎抓取整个站点,可以这样设置:
User-agent: *
Disallow: /
若只想禁止爬虫进入后台管理区域:
User-agent: *
Disallow: /admin/
这里有个极易犯错的地方:路径末尾的斜杠决定了匹配范围。/admin/ 仅限制该目录及其内部页面;如果写成 /admin 而没有末尾斜杠,那么凡是名称以 admin 开头的路径都会被屏蔽,例如 /administrator、/admin-tools,这类误伤往往很长时间难以察觉。
当同一路径同时被 Allow 和 Disallow 命中时,结果与书写先后无关。判断依据是:若两条规则的路径长度相同,则 Allow 优先;若长度不同,路径越长、越具体的规则优先生效。
例如,要屏蔽整个博客目录,但单独放行一篇文章,可以这样配置:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
这样专题文章能够正常抓取,而其余博客页面仍被拦截。建议在配置之前先整理一份需要限制的路径清单,逐条核对是否存在交叉匹配,避免出现意外放行或反向屏蔽的情况。若测试中发现抓取结果与预期不符,优先检查是否被更具体的路径规则干扰。
在文件末尾添加一行 Sitemap 声明(Sitemap: https://yourdomain.com/sitemap.xml),能主动向爬虫提示地图位置,对加快新页面的收录有积极作用。需要注意,Sitemap 指令并不受 User-agent 限制,对所有爬虫都生效。
站点改版时,域名切换或目录结构调整会导致旧规则不再适用,此时应同步更新 robots.txt 中的路径信息。例如原路径 /old-news/ 改为 /updates/ 后,必须及时修改对应规则。建议在改版上线前先在测试环境验证新文件,关注抓取日志,确认爬虫能够正确访问关键页面。
此外,不应在 robots.txt 中依赖它来阻止敏感数据泄露。该文件是公开的,任何人都能查看,真正的核心隐私数据应通过权限验证等方式保护。文件内容应尽量精简,仅保留必要的规则,减少误配概率。
可以通过搜索引擎提供的抓取测试工具,输入具体页面路径,查看模拟抓取的允许或禁止结果。同时观察服务器访问日志中爬虫的请求记录,能直观了解哪些页面被实际访问。
非常重要。带斜杠表示一个目录,匹配范围限定在该目录内部;不带斜杠则匹配所有以该字符串开头的路径。写错斜杠很容易造成规则失效或误伤其他正常页面。
不能完全依赖它。robots.txt 是一种君子协定,遵守它的爬虫会跳过相关路径,但页面链接仍可能出现在搜索结果中(仅显示 URL 无摘要)。如需彻底阻止索引,应结合 noindex 标签使用。
配置 robots.txt 看似简单,实则细节众多。记住三个要点:文件放置在根目录且文件名全小写;书写规则时注意路径斜杠和 Allow/Disallow 的组合逻辑;改版或调整结构时同步更新并测试。建议定期检查文件,使用抓取测试工具验证关键路径,同时结合 noindex 保护真正敏感的内容,让搜索引擎抓取更高效、更精准。