当搜索引擎的抓取机器人访问你的网站时,它首先会查看服务器根目录下的robots.txt文件。这个文件相当于一份抓取许可清单,直接决定了蜘蛛能访问哪些页面、哪些内容会被拒之门外。配置得当,网站的优质内容能被更高效地收录;配置失误,则可能导致整站收录异常甚至被搜索引擎清退。
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指令。
将敏感数据交给Robots协议保护:把订单数据、会员资料所在目录列入Disallow,只能阻止正规搜索引擎收录,却防不住恶意爬虫的扫描。真正需要保密的数据应放在登录认证或防火墙之后,绝不能只靠robots.txt设防。
robots.txt一旦上线,建议立即进行验证,避免配置错误在搜索引擎中累积影响。可以通过以下方式进行确认:
每次修改完成后,可通过站长平台提交更新请求,促使蜘蛛尽快重新抓取该文件,缩短规则生效的等待时间。
不是必须。Allow仅在建立全局禁止后,需要特别开放某个子目录时才发挥价值。对于默认放行全站的网站,可以不写Allow指令,规则保持精简即可。
需要。目录结构发生变化后,原有的Disallow和Allow路径可能已失效。未及时更新的规则或会误伤新页面,或会让旧目录继续暴露在抓取范围之外,务必在改版结束后同步审查并修正文件。
不能。Robots协议只是影响搜索引擎的收录行为,无法阻止其他网站直接链接或下载图片。保护原创素材应使用防盗链措施或添加水印,而不是依赖robots.txt。
Robots.txt文件体积虽小,却是搜索引擎与网站之间的第一道沟通窗口。正确编写规则,可以让蜘蛛专注于抓取有价值的页面,减少无关内容对服务器资源的消耗。建议每季度检查一次文件内容,核对目录变更与规则是否同步,并在使用站长工具验证后保留完整的配置记录。善用这个简单而有效的工具,能让网站的抓取与收录保持在理想状态。