robots.txt是网站根目录下一个普通的文本文件,用来告诉搜索引擎的蜘蛛:站内哪些内容可以抓取,哪些内容应当避开。对网站运营者来说,这是管理收录范围、保护后台数据、节省服务器资源最基本的工具之一。配置得当,蜘蛛会把精力集中在关键页面上;配置失误,则可能导致整站无法被收录或敏感信息泄露到搜索结果中。
蜘蛛每次访问站点,第一件事就是请求根目录下的robots.txt,根据文件里的规则来决定接下来的抓取路径。如果文件不存在,或者内容是空的,蜘蛛就认为所有URL都可访问,未被密码保护或者没有被其他方式拦截的页面,都有可能被收录进搜索引擎。
需要特别提醒的是,robots.txt属于一种行业约定,它只对愿意遵守规则的搜索引擎蜘蛛有效。对于恶意采集程序或者不按规矩出牌的脚本,这份文件没有强制约束力。所以,不要把robots.txt当成真正的安全防线。涉及支付信息、用户隐私、后台管理的数据,必须在robots.txt之外,另外加上登录身份验证、IP白名单等访问控制手段。
文件里最核心的指令有三个:User-agent声明规则适用哪种蜘蛛,Disallow明确禁止抓取的路径,Allow则可以在已被禁止的目录里单独放行某个子路径。此外,Sitemap指令还能直接把站点地图的地址提交给蜘蛛,从而加快新页面的抓取速度。
如果网站内容全部公开,也没有后台或私人目录需要保护,最省事的写法就是:
User-agent: * Disallow:这里的关键是Disallow后面什么都不写,表示不拦截任何路径。一旦写成了 Disallow: /,意思就完全相反,等同于让所有蜘蛛空手而归,整站都不会被收录。这种全禁写法一般只用在服务器维护、网站开发调试这样的临时场景里。
如果某个蜘蛛频繁消耗服务器带宽,却几乎不带来有效流量或收录,就可以把它单独拉黑。前提是要用对它的官方标识,比如谷歌蜘蛛叫Googlebot,百度蜘蛛叫Baiduspider,必应蜘蛛叫bingbot。
User-agent: BadBot Disallow: /但要注意,robots.txt是按名称匹配蜘蛛,不是按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.txt当作代码一样做一次版本检查,能省掉很多麻烦。
另外,写完规则后,直接在浏览器里访问 www.example.com/robots.txt,检查一下内容是否与预期一致;也可以搜索“robots.txt 在线检测”,用蜘蛛的视角来模拟抓取一遍,确认指令正确。
除了基础的抓取规则,不少网站在文件里还会加上Sitemap声明,把站点地图地址直接告诉蜘蛛,这对新内容较多的网站尤其有帮助。Sitemap指令放在文件末尾即可,不限制数量,可以为不同内容类型添加多个地图。
对于大型电商网站或平台站,建议为不同的蜘蛛分别建立规则段,因为不同搜索引擎对页面的收录标准各有差异。同时,定期检查服务器日志里蜘蛛的实际抓取情况,如果发现某个页面大量被某蜘蛛抓走却没什么转化,就需要调整对应的Disallow规则。
最后要记住的是,robots.txt不是越严越好。过度限制可能导致核心页面被排除在索引之外,最终影响自然搜索流量。每次改动前先想清楚:这个页面是否希望进入搜索库?如果希望,就放行;如果不希望,就禁止,并且补上一层登录权限以防万一。
通常情况下没有固定时间。搜索引擎蜘蛛会定期重新抓取robots.txt,短则几小时,长则数天。建议在改动后使用搜索引擎官方的站长工具提交一次URL或申请重新抓取,这样能加快规则的生效速度。
这通常是因为页面在被禁止之前已经被搜索引擎收录了。robots.txt只负责阻止未来的抓取,并不会主动删除已经存在的索引记录。要想让旧页面快速消失,可以在站长工具里提交删除申请,或者为页面添加noindex标签后等待蜘蛛重新访问。
没有robots.txt并不算错误,蜘蛛默认会抓取所有可公开访问的页面。但对于有后台、会员中心、临时页面等不想被收录的内容,缺少这份文件意味着这些路径可能被搜索引擎发现并编入索引。建议至少放一个内容最简单、规则明确的robots.txt,把不希望被抓取的目录列清楚。
合理配置robots.txt,核心目标是让蜘蛛“按你的计划走”:把抓取资源集中在值得收录的内容上,同时把后台和私密数据挡在搜索引擎之外。动手前先理清站点里有哪几类路径需要保护,写好后用在线工具验证一遍规则,上线后隔几天查看日志确认蜘蛛的实际行为。每次修改都当作正式发布来对待,就能避开大多数常见的坑。