搜索引擎蜘蛛访问网站时,会率先请求根目录下的robots.txt文件,并据此决定哪些链接可以抓取、哪些需要跳过。这份文件设置得当,重点页面能获得更频繁的抓取,后台及隐私目录也能得到有效保护;设置不当,轻则影响收录效果,重则导致整站从搜索结果中消失。
Robots协议本质上是存放在服务器根目录的一份公开约定,蜘蛛每次抓取前都会优先读取该文件。如果文件缺失或内容为空,蜘蛛默认放行所有链接,只要页面没有额外的访问限制,就可能被纳入索引。因此,要限制某些区域被收录,必须主动在文件中明确声明。
需要明确的是,这一协议仅对遵守规则的搜索引擎有效,对恶意采集脚本和刻意绕过规则的爬虫并不具备强制约束力。涉及登录后台、用户数据等敏感页面,必须通过登录验证和IP白名单等手段进行拦截,不能仅依赖robots.txt。
规则语法由两条核心指令构成:User-agent用于声明规则适用的蜘蛛名称,Disallow用于声明禁止访问的路径。辅助指令中,Allow可在被禁止的目录内放行指定子路径,Sitemap则用来向蜘蛛直接提交站点地图,加速新链接的发现。
对于内容完全公开的博客或展示型网站,最简洁的写法是不对任何路径设置限制:
User-agent: * Disallow:注意Disallow后留空才表示不做限制,若误写成Disallow: /,效果等同屏蔽全站,所有搜索引擎均无法收录页面。这种写法一般仅适用于网站维护期间或测试环境。
当某个蜘蛛频繁消耗服务器资源却未带来有效流量时,可单独对其进行限制。蜘蛛名称需准确填写,例如Google的蜘蛛为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与其对应的指令之间需以空行隔开。若将不同蜘蛛的规则混在一起,可能导致部分规则被忽略或整体失效。
使用正则表达式或通配符不当:Robots协议仅支持有限通配符(如*和$),且并非所有蜘蛛都完全支持。过度依赖复杂匹配规则,可能造成预期之外的放行或拦截,建议尽量使用明确的路径前缀。
忽略爬取延迟设置:面对大量并发抓取,可在规则中加入Crawl-delay指令(单位秒)来限制抓取频率。不过该指令并非标准协议,不同蜘蛛的处理方式存在差异,需针对目标引擎单独验证。
写完robots.txt后,切勿直接上线了事,应通过以下步骤确认规则生效且无副作用。
此外,建议在文件末尾通过Sitemap指令声明站点地图地址,这有助于蜘蛛更快发现新发布的内容,缩短收录周期。
蜘蛛对robots.txt的缓存时间因引擎而异,通常为数小时至一天。修改后不会立即生效,但可在站长平台中申请重新抓取或等待缓存自然过期,一般24小时内即可生效。
不能完全保证。它只能阻止蜘蛛抓取,若其他网站链接了该页面,或页面曾被抓取过,仍可能以其他形式出现在搜索结果中。若需彻底移除,应结合noindex标签或从站点地图中删除。
蜘蛛会从文件开头依次匹配,选择最具体且匹配的User-agent规则组。若存在针对特定蜘蛛的规则,则优先使用该组;否则使用通配符组的规则。因此,具体规则应写在通用规则之前,以避免被覆盖。
合理配置robots.txt是保障网站收录质量和服务器稳定的基础工作。上线前务必核对路径大小写、分组逻辑和通配符使用,上线后利用测试工具与访问日志持续监测效果。建议每季度复盘一次规则内容,确保与站点结构同步更新,从而让搜索引擎蜘蛛高效地为你的优质内容服务。