搜索引擎的蜘蛛每次访问你的网站,都会先到根目录寻找robots.txt文件,并根据其中的规则决定抓取哪些页面、跳过哪些页面。这份文件配置得当,核心内容能被蜘蛛更频繁地抓取;配置失误,轻则收录不完整,重则整个网站从搜索结果里消失。
Robots协议本质是放置在服务器根目录的公开约定,蜘蛛在抓取任何页面前都会先行请求这份文件。若文件缺失或空白,蜘蛛会默认允许抓取全部公开链接,只要页面没有密码保护,都存在被索引的可能。因此,对不想被收录的区域,必须主动以规则声明。
必须明确的是,该协议只对遵守规范的搜索引擎蜘蛛有效,对恶意采集程序或是伪造标识的爬虫并无强制约束力。涉及登录后台、用户隐私数据等敏感区域,必须依赖登录验证和IP访问控制来防护,绝不能把robots.txt当作唯一安全屏障。
理解robots.txt,只需掌握最基本的语法结构。规则通常由两部分构成:先是User-agent声明该规则指向的蜘蛛,随后跟随着一条或多条Disallow指令定义禁止访问的目录或文件。
对于内容完全公开的资讯网站,最稳妥配置是声明所有蜘蛛不设任何限制:
User-agent: * Disallow:注意Disallow后留空才表示放行;一旦误写成Disallow: /,则意味着禁止蜘蛛访问全站,所有页面都无法获得收录。此写法通常只用于站点维护或临时测试环境。
当某个蜘蛛频繁请求耗尽服务器资源,却无法带来有效流量时,可以精准屏蔽。蜘蛛名称必须准确无误,如谷歌的Googlebot、百度的Baiduspider:
User-agent: BadBot Disallow: /这个规则会让BadBot被完全拒之门外,但其他蜘蛛的抓取行为不会受影响。值得注意的是,规则仅按蜘蛛名称匹配,无法针对真实IP过滤,故意更换标识的恶意爬虫依然可能进入站内。
若只希望搜索引擎收录部分频道,采取全局禁止加局部放行的组合方式即可:
User-agent: * Disallow: / Allow: /news/ Allow: /sitemap.xml这种写法利用Allow覆盖Disallow的规则,而且允许多条Allow叠加。为确保最大兼容性,建议将Disallow写在前,Allow紧跟其后,所有路径使用正斜杠开头,确保与服务器真实目录结构完全吻合。
即使没有语法报错,一个robots.txt仍可能让收录问题反复发作。以下问题最常见于日常运维。
路径大小写不匹配:蜘蛛对路径大小写敏感。如果网站实际目录是/Public/,规则却写作/public/,Disallow将完全失效,想要屏蔽的内容照常被爬走。配置写完,务必通过浏览器地址栏逐一确认路径的实际大小写。
多条规则覆盖冲突:同一蜘蛛被不同User-agent分组重复定义,可能导致规则相互覆盖,让蜘蛛按错误指令执行。不同蜘蛛的分组之间应保留空行,避免归属混淆,确保每个分组只声明当前的蜘蛛名称。
将私密文件直接放入可抓取区域:临时文件、备份压缩包或JSON数据若放在公开目录下,即便没在robots.txt中声明禁止,仍可能被蜘蛛抓取并索引。敏感文件应直接移出可访问的目录,而非依赖规则隐藏。
蜘蛛并不会时刻反复请求robots.txt,通常缓存该文件数小时甚至数天。修改规则后需要耐心等待,一般蜘蛛会在数小时到48小时内自动重新获取。如果急于看到效果,可以在搜索引擎站长工具后台手动提交或触发更新。
不能。robots.txt能拦下的只是搜索引擎的合规蜘蛛,并无法阻止恶意爬虫直接访问。若页面存在隐私泄露风险,应通过服务器目录权限设置、登录验证或IP白名单来彻底封锁,才能实现真正的隔离和保护。
仅有部分蜘蛛对通配符提供了有限度的支持,例如匹配任意字符的星号,但主流搜索引擎对正则表达式的支持并不统一。为保证所有蜘蛛都能正确解析规则,建议使用绝对路径逐条列出,避免依赖通配符带来的兼容性隐患。
robots.txt是网站收录控制的起点,但绝非全部。配置完成后,建议在每个搜索引擎的站长工具中核对抓取统计与收录报告,及时发现规则异常。把规则文件作为日常运维的一部分,结合登录验证和目录权限等手段,才能同时保障内容收录效率与站点信息安全。