网站上线后,搜索引擎蜘蛛会主动请求站点根目录下的robots.txt文件,用来判断哪些页面可以抓取、哪些需要跳过。这份文件直接决定蜘蛛的抓取范围,既影响收录速度,也关乎服务器资源的消耗。配置合理,核心内容能被优先收录,后台及敏感数据也能获得保护。
蜘蛛访问任意站点时,都会先请求robots.txt。若文件不存在或者内容为空,则默认全站可被抓取。换句话说,没有主动声明限制时,任何未被登录页保护的公开链接,都可能被蜘蛛带回索引库。
需要清楚的是,robots协议并非强制规定,而是一种行业默认的协作共识。它对主流搜索引擎有效,但对恶意采集程序或自写脚本不具备约束力。因此,凡是涉密数据,不能只靠robots.txt保护,还需搭配账号权限验证或服务器层级的IP黑白名单。
规则文件由两条核心指令构成:User-agent用于指定规则对哪个蜘蛛生效;Disallow用于声明禁止抓取的路径。辅助指令中,Allow可以在被禁止的目录内单独放行指定子路径,Sitemap则能把站点地图地址直接递给蜘蛛,帮助新页面更快被发现。
内容公开、无隐私顾虑的站点,适合使用这种声明方式,直接表明开放态度:
User-agent: *
Disallow:
这里Disallow后面必须留空,才表示不拦截任何路径。若误填为“Disallow: /”,就会变成封锁所有蜘蛛,全站无法被收录。这种写法通常仅用于临时维护、测试环境或站点关闭前夕。
当某个蜘蛛抓取频率过高、占用大量带宽却未带来有效流量时,可单独将其屏蔽。蜘蛛的官方标识要准确,例如谷歌蜘蛛为Googlebot,百度蜘蛛为Baiduspider:
User-agent: BadBot
Disallow: /
需要提示的是,规则只匹配蜘蛛名称,无法识别具体来源IP,因此并不能完全杜绝恶意访问。若对方更换标识,规则便会失效。
若站点只需收录部分频道,可采用“先全禁、再局部放行”的方式:
User-agent: *
Disallow: /
Allow: /articles/
Allow: /about/
Allow: /sitemap.xml
此写法中Allow的优先级高于Disallow,且两条指令可多次叠加。为了兼容多数蜘蛛的解析习惯,应将Allow统一写在Disallow下方,同时确保路径以“/”开头,与服务器真实目录结构保持一致。
一份看似合理的robots.txt,也可能暗藏收录隐患。以下问题在运维中较为常见,值得逐一对照排查。
路径大小写不敏感与敏感并存:多数服务器的文件路径区分大小写,而蜘蛛对路径同样区分。若实际目录为/Public/,规则中误写成/public/,则Disallow不生效,内容会被意外抓取并进入索引。
多个User-agent块相互覆盖:当文档中出现多组User-agent规则时,蜘蛛会优先匹配自身名称对应的那一组。若同时存在“User-agent: *”与其他指定蜘蛛的规则,后者对目标蜘蛛生效,其余蜘蛛则读全局规则。写错顺序或遗漏global块,都会导致意想不到的抓取行为。
规则中包含大量不存在的页面地址:在robots.txt中罗列出已经不存在的目录,既浪费文件体积,也会让蜘蛛在解析时耗费时间,建议定期清理过期条目。
中文路径未编码:若目录名中包含中文,必须对路径进行百分号编码(如“/分类/”应写作“/%E5%88%86%E7%B1%BB/”),否则蜘蛛无法正确匹配路径。
robots.txt修改后,通常会在数十秒到数分钟内生效,但蜘蛛爬取该文件的时间周期并不固定。为了缩短等待时间,可主动向搜索引擎的站长平台提交文件变更。重置抓取频次或手动提交URL,都能加快新规则被执行的进度。
每次调整后,建议先在浏览器中直接访问域名下的robots.txt,确认文件输出内容正确且未被服务器拦截。不少站点会因CDN缓存或WAF规则,返回错误页面,导致蜘蛛无法读取规则,从而出现抓取异常。
可以,但需要一定时间。修正文件内容后,蜘蛛在下一次抓取时会重新解析。若部分页面已被移除索引,恢复周期通常需要数天甚至数周。期间可配合站长平台的URL提交工具,加速重新抓取。
可行,但不推荐。robots.txt中的路径应为根目录下的相对路径,不建议写完整域名。例如要禁止抓取example.com/temp.html,规则应写“Disallow: /temp.html”,而非完整URL。这样写既简明,也不易因参数或协议变化而失效。
robots.txt只是收录的前提条件之一。页面未被收录还可能源于内容质量不足、内链缺失、页面打开速度过慢或网站权重较低。建议先确认蜘蛛是否成功抓取页面,再检查页面代码中是否设置了noindex标签或canonical指向了其他地址。
配置robots.txt时,建议遵循最小开放原则:默认全站禁止,再逐个放行需要收录的栏目,这样能最大程度避免隐私数据意外进入索引。每次修改后,及时在站长工具中验证规则是否生效,并定期复查日志中蜘蛛的抓取情况。若发现某类蜘蛛频繁访问但无实际收录价值,可单独屏蔽其抓取路径,把更多服务器资源留给核心页面。