搜索引擎蜘蛛造访网站时,首先读取根目录下的robots.txt文件,依据其中的规则决定抓取哪些链接、跳过哪些链接。这份文件设置得当,重要页面可以获得更频繁的抓取,后台和隐私目录也能得到保护;配置失误,轻则收录异常,重则整站从搜索结果中消失。掌握这份文件的配置方法,是每个网站运营者的基本功。
Robots协议实际上是存放在服务器根目录的一份公开约定,蜘蛛每次抓取前都会先请求该文件。如果文件不存在或内容为空,蜘蛛默认放行全部链接,只要页面没有密码保护,都有可能进入索引。因此,想要限制某些区域不被收录,必须主动写明声明。
需要明确的是,这份协议对守规矩的搜索引擎有效,对恶意采集脚本和绕过规则的爬虫并无强制约束力。涉及敏感数据的登录后台、用户信息页面,必须借助登录验证和IP白名单来拦截,不能仅依赖robots.txt。
规则语法由两条核心指令构成:User-agent声明规则适用的蜘蛛,Disallow声明禁止访问的路径。辅助指令中,Allow可以在被禁止的目录中放行指定子路径,Sitemap则用于直接向蜘蛛提交站点地图,加快新链接的发现速度。
对于内容完全公开的博客或展示型网站,最简洁的写法是声明不拦截任何路径:
User-agent: * Disallow:注意Disallow后面留空才表示不限制,如果误写成Disallow: /,效果等同于封锁全站,所有搜索引擎都无法收录页面。这种写法一般仅用于维护期间或测试环境。
当某个蜘蛛频繁消耗服务器带宽,却没有带来任何有效访客时,可以单独限制它。蜘蛛名称需要写准确,比如谷歌的是Googlebot,百度的是Baiduspider:
User-agent: BadBot Disallow: /按此规则,BadBot对应的蜘蛛会被完全挡在站外,其余蜘蛛不受影响。但规则只能按名称匹配,无法辨认具体的IP地址,遇到更换标识的恶意爬虫依然拦不住,还需要配合防火墙策略。
如果只想让搜索引擎收录部分频道,而把其他内容全部隐藏,可以采用全局禁止、局部放行的组合写法:
User-agent: * Disallow: / Allow: /articles/ Allow: /about/ Allow: /sitemap.xml在这种组合中,Allow的优先级高于Disallow,规则可以多次叠加。为了确保兼容性,建议把Allow写在所有Disallow之后,且路径以正斜杠开头,与服务器目录保持一致。
一个看似没有语法错误的robots.txt,仍可能导致收录问题反复出现。下面几类错误在日常运维中最为常见。
路径大小写与目录不一致:蜘蛛对路径是大小写敏感的。站点实际目录为/Public/,而规则写作/public/,Disallow就形同虚设,原本想屏蔽的内容照样被抓取。配置前先用浏览器逐一验证真实路径。
多个User-agent互相干扰:有些建站程序会自动生成多个User-agent分组,如果后写的Disallow覆盖了之前的Allow,就会出现规则冲突。检查时逐段核对,确保每个分组的意图独立且清晰。
Sitemap路径被意外拦截:如果Disallow: /写在Sitemap指令之前,且没有额外的Allow例外,蜘蛛可能无法读取站点地图。建议将Sitemap行放在文件末尾,避免被其他规则误伤。
写好robots.txt后,不要急于上线,先进行必要的验证。以下是几种实用的检查手段。
养成每次修改后都留存备份的习惯,一旦发现问题可以快速回滚,避免长时间影响搜索引擎的抓取。
必须放在网站根目录下,即域名后的第一级路径,例如https://example.com/robots.txt。子目录下的同名文件不会被蜘蛛识别,放在其他地方也没有任何实际作用。
不能直接阻止。robots.txt只是告诉蜘蛛不要抓取,但搜索引擎仍可能通过外部链接推断页面内容并建立索引。真正想阻止收录,需要使用noindex标签或登录验证,robots.txt的有效范围仅限于抓取层面。
蜘蛛通常会定期重新抓取robots.txt文件,一般从几分钟到几天不等。如果希望加快生效速度,可以在搜索引擎站长平台中主动提交更新,或手动请求重新抓取。
Robots.txt是一种轻量但关键的抓取规则工具,正确配置能为网站带来更健康的收录结构,也能保护敏感目录不被随意访问。建议从全站放行开始,根据运营需求逐步添加限制规则,每次修改后都经过验证再上线。同时备份好历史版本,遇到问题可以随时回滚。记住,robots.txt不是安全工具,涉及真实用户数据的目录,务必叠加更严格的访问控制措施。