搜索引擎爬虫访问一个域名时,总会先到根目录查询robots.txt文件。这份纯文本的"访客须知"向爬虫声明了网站的抓取边界:哪些路径可以索引、哪些区域需要绕行。合理的robots规则,既能防止后台和测试目录进入搜索结果,又能节省网站的抓取预算,让搜索引擎把有限资源花在最重要的页面上。
robots.txt必须存放在网站根目录,且文件名需完全小写,例如www.example.com/robots.txt。文件正文一般使用UTF-8无BOM格式,每行承载一条独立指令,路径中的大小写字母被视为不同内容。
一份可用的robots.txt由以下核心指令组成:
以下为一条通用的基础规则示例:
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://www.example.com/sitemap.xml
该规则表示:允许所有爬虫抓取网站,唯独排斥/admin/路径,但/admin/public/子目录被豁免。执行此规则时要清楚,不能识别Allow指令的爬虫,依然会受到Disallow的制约。
不同类型网站对robots.txt的需求差异明显,本节列举三个高频使用场景供参照。
内容社区、博客以及新上线的官网,通常希望搜索引擎收录越多页面越好。此时仅需声明一条无内容的Disallow即可:
User-agent: *
Disallow:
或直接省略Disallow行。开发者在此处最易踩坑的写法是Disallow: /,该写法等同于向所有蜘蛛下达"禁止入内"的指令,结果是首页可能还在,但内页收录量会直线下降。
当某些搜索引擎抓取频率过高挤占带宽,或不想让其收录站点时,可对单一爬虫单独设置规则,不影响其他引擎的正常抓取:
User-agent: Bingbot
Disallow: /
该配置会对Bing的爬虫全面关闭站点,Google的蜘蛛访问则不受干扰。具体爬虫的官方名称可在各搜索引擎站长平台中查阅,不可随意编写代号,否则规则会失灵。
企业官网的运营后台、人员信息管理页面以及缓存生成的临时文件夹,都不适合进入搜索索引。将这类敏感目录统一拦截是高效做法:
User-agent: *
Disallow: /backend/
Disallow: /temp/
Disallow: /inner/
建议在屏蔽管理地址的同时,同步在服务器层面设置登录认证,双保险更具安全性,避免因规则配置失误导致敏感路径泄露。
部分搜索引擎支持在Disallow和Allow中附加通配符,以简化规则篇幅。星号(*)可表示任意长度的字符序列,美元符号($)表示路径结束。
示例一:拦截包含特定查询参数的动态接口地址:
Disallow: /*?sort=
该规则能阻止所有带sort参数的URL被抓取。需要留意的是,旧版HTTP协议中的部分爬虫对通配符支持不足,使用前最好先在robots测试工具中验证。
示例二:仅屏蔽某个文件类型:
Disallow: /*.pdf$
若站点存在大量重复或低质PDF文件,此法可精准过滤。同时应保持规则顺序稳定,robots规范并未对匹配优先级做强制约定,为了减少歧义,推荐将更具体的路径写在前面。
robots.txt配置不当时,轻则收录少,重则整站被搜索引擎无视。以下三类问题需重点防范:
排查规则最有效的方式是使用搜索引擎站长平台的robots测试功能,输入线上地址即可模拟抓取,检查哪些路径被拦截。若无法访问后台,也可以在浏览器直接打开robots.txt文件,逐行核对目录是否与实际网站结构一致。
搜索引擎会周期性重新抓取该文件,这个周期通常为数天。如果急需更新,可在搜索引擎的站长后台手动提交robots文件,触发即时验证,从而缩短生效时间。
不能。robots.txt只作用于搜索引擎的索引行为,无法阻止其他网站直接通过链接展示或调用图片。防外链应借助服务器端的防盗链配置或.htaccess规则,而非robots。
需要。搜索引擎将不同域名视为独立站点,每个域名的根目录下都应该放置对应的robots.txt文件,并声明各自独立的Sitemap地址。
robots.txt是搜索引擎与网站之间的第一道沟通窗口,正确的配置能大幅提升抓取效率。建议在编写前先梳理网站的目录结构,隔离出后台、脚本及无用文件,再按需添加Allow和Sitemap声明。规则上线后不要一劳永逸,应定期检查站长平台的数据反馈,确保核心页面持续获得抓取机会,避免因URL结构改动而造成的规则失效。