搜索引擎的蜘蛛每次访问网站时,第一步不是抓取页面内容,而是请求根目录下的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/,则限制声明完全失效。配置前应逐一通过浏览器地址栏核对真实路径后,再填入规则。
多个User-agent声明块相互干扰:蜘蛛会优先匹配与自身名称完全一致的声明块;若没有精确匹配,则回退至*通配声明。当某蜘蛛同时匹配到具体声明和通配声明时,具体声明优先。若多组声明语义矛盾,很可能导致某个蜘蛛意外访问本应屏蔽的目录。
忽略文件编码与格式细节:文件必须保存为UTF-8无BOM格式,注释行只能以井号开头单独成行。路径结尾的斜杠含义不同,不带斜杠匹配的是以该字符串开头的所有路径。这些细节稍不留意,就会造成规则与实际预期不符。
完成配置后,务必通过浏览器直接访问域名/robots.txt,检查文件内容是否与预期一致、编码是否正常。常用搜索引擎的管理后台均提供抓取测试工具,可用来模拟某个具体URL的抓取结果,判断该链接是被允许还是被拒绝。测试通过后再发布上线。
日常维护中应定期复查规则是否仍然适用。站点改版后,旧目录可能已失效,新目录却未同步放行;蜘蛛名称也可能随搜索引擎产品调整而更新。建议每季度回顾一次规则内容,确保排除规则没有误伤需要收录的新栏目。
两者含义截然相反。Disallow后不留任何字符,代表全站放行,蜘蛛可以抓取所有路径;Disallow: /则表示禁止访问根目录下的一切路径,等同于关闭全站收录。配置时务必区分清楚,避免误操作导致整站无法被搜索到。
不需要,也没有必要。蜘蛛在抓取过程中遇到返回404状态码的链接时会自行放弃索引,这属于正常的HTTP响应流程,无需额外使用robots.txt进行拦截。robots.txt仅用于控制路径访问,不负责处理页面状态码。
没有固定的统一时间。多数主流蜘蛛会在一定周期内(通常为几天)重新请求该文件,某些场景下也会因外部触发而提前重抓。修改后耐心等待即可,不必反复高频改动,频繁变动反而可能导致规则状态在蜘蛛端更新延迟。
合理的robots.txt配置并非越严越好,而是要让搜索引擎清楚识别站点的开放边界与保护区域。建议从全站放行开始小步调整,每次改动后借助抓取测试工具验证效果,确认无误后再逐步增加限制。同时把登录鉴权和IP白名单作为敏感路径的底线防护,与robots规则配合使用,才能真正做到收录有序、隐私无忧。