搜索引擎蜘蛛在访问一个网站时,会优先检查该站点根目录下的robots.txt文件。这份文件承担着"抓取边界"的职责,明确告知蜘蛛哪些路径允许访问、哪些路径应当绕行。配置合理,后台数据不会泄露,蜘蛛抓取资源的效率也会更高,对收录质量与服务器负载均有直接帮助。
蜘蛛请求站点时,会先拉取robots.txt。若找不到文件或文件内容为空,蜘蛛会默认自动抓取站内所有未加密的公开页面。也就是说,不写入任何声明,站内可访问的内容大概率都会被搜索引擎收录。
必须认清的是,robots协议属于约定俗成的行业规范,仅约束那些遵守规则的蜘蛛。存心绕开的恶意爬虫并不受其管控,因此千万别把它当作安全工具。涉及用户隐私或经营数据的目录,必须依靠登录验证或服务器端权限设置来保护。
语法要点并不复杂,常见的有四类指令:User-agent圈定规则的适用对象,Disallow声明禁止抓取的路径,Allow在封锁区域内单独放行某个路径,Sitemap用来将站点地图地址直接递交给蜘蛛,帮助新页面更快被发现。
对完全公开、无隐私内容的站点而言,最直接的写法是向所有蜘蛛声明放行:
User-agent: *
Disallow:
注意Disallow留空才表示不拦截任何路径。如果不小心写成 Disallow: /,后果是封禁所有蜘蛛,整站无法被收录,一般仅在站点维护或测试阶段使用。
某些蜘蛛频繁访问抢占用带宽,却没有带来匹配的流量转化时,可以单独限制它。前提是蜘蛛UA名称必须准确匹配,例如谷歌蜘蛛通常叫Googlebot,百度蜘蛛是Baiduspider。写法参考下方:
User-agent: BadBot
Disallow: /
需要留意的是,这里只能按蜘蛛名称来匹配,无法限定IP段。因此,真正对抗恶意爬虫还需要依赖防火墙或服务器层面的拦截策略。
当仅希望部分内容进入搜索结果时,常用思路是"先封禁整站,再定向开放",这也是内容站点的通用做法:
User-agent: *
Disallow: /
Allow: /articles/
Allow: /about/
Allow: /sitemap.xml
这个结构中,Allow的优先级高于Disallow,两条指令均可重复书写。为确保不同蜘蛛解析一致,建议把Allow统一排在Disallow之后,路径一律以/开头,并保证与真实目录结构完全吻合。
一份表面无异常的robots.txt,也可能悄悄造成收录损失甚至信息暴露。以下排查点在实际操作中经常被忽略,值得逐条核对。
路径大小写不统一:蜘蛛解析路径时区分大小写。实际目录是/Images/,规则写成/images/便无法匹配,该目录可能被误封或误放行。
通配符与结尾星号:不同搜索引擎对通配符的支持度并不一致。部分蜘蛛支持*与$符号,但相当一部分处理逻辑较为简单粗暴。若规则涉及复杂通配,务必通过搜索资源平台的抓取检测工具验证效果。
Sitemap指令位置不当:Sitemap行并不受User-agent分组限制,放在文件任何位置均可生效。但一旦置于错误段落后,部分严谨的蜘蛛可能仅将该行视为某个UA的附属参数,导致站点地图提交失败。
写完robots.txt并上传至服务器根目录后,不能立刻认为大功告成。通常建议执行以下几个步骤确认规则生效:
不能。robots.txt只能放在域名的根目录,例如 https://example.com/robots.txt 。若把它放到子目录或二级域名下,蜘蛛将无法识别,整站规则全部失效。
规则匹配遵循最具体优先原则。当两条指令的路径长度一致时,Allow指令优先于Disallow。利用这一特性,可以实现"整站屏蔽但单独放行几个栏目"的精细控制。
蜘蛛通常会定期重新抓取robots.txt,短则几小时,长则数天。想加快生效速度,可主动到站长平台提交更新请求,或利用搜索资源平台的抓取诊断工具强制刷新。
robots.txt的本质是抓取效率的调节器,而非安全工具。规划规则前先梳理站点目录结构,明确哪些内容值得被收录、哪些必须保护,再动手编写。上线后持续用平台工具校验规则效果,并根据搜索流量反馈动态调整,才能让这份文件真正服务于SEO目标。