对于网站管理者而言,robots.txt 是必须掌握的基础文件。它位于站点根目录,通过几行规则引导搜索引擎爬虫的访问范围。规则设置得当,可以有效分配抓取资源,让重要页面更快被索引;反之,一旦写法错误,可能导致整站权重受损甚至从搜索结果中消失。理解这份文件的核心语法与潜在陷阱,是每个运营者的必修课。
robots.txt 是给爬虫看的,用户无法直接看到其效果,但在浏览器中访问“域名/robots.txt”即可查看文件内容。它的作用是引导爬虫判断哪些路径可以访问,哪些路径应该避开,但并不能决定页面是否被收录。要让某个页面彻底不被收录,应当使用 noindex 标签。此协议仅影响爬虫的抓取行为,对于已经抓取的内容是否进入索引库没有控制力。
例如,某页面被 robots.txt 屏蔽后,如果它获得了大量外部链接,搜索引擎依然可能将其索引,只是展示的摘要可能来源于其他途径。此外,该协议的约束力依赖爬虫的自觉遵循。主流搜索引擎的爬虫一般会遵守规则,但不少恶意采集程序和第三方抓取工具并不理会。涉及用户隐私、订单信息、管理后台等敏感目录,务必叠加登录认证、IP 白名单或防火墙等安全措施,不能单纯依赖这份文件。
robots.txt 由一个或多个规则组构成,每个规则组必须以 User-agent 开头,字段格式统一为“名称: 值”,冒号需使用英文半角,规范写法是冒号后保留一个空格。尽管多数爬虫对格式的容错性较强,但保持规范可以避免后续出现解析异常。
此行用来声明规则组所针对的爬虫。比如,只限制 Google 的爬虫,填写 User-agent: Googlebot;若要统一约束所有搜索引擎的爬虫,则使用通配符 User-agent: *。可以设置多个规则组,对不同爬虫采取差异化策略,例如对谷歌开放更多路径,而对必应收紧访问权限。
Disallow 声明禁止抓取的路径,Allow 用于声明允许访问的路径,两者经常配合使用。需留意的是,当 Disallow 后面没有值时,表示清除所有限制,爬虫可抓取全站内容。如果同一 URL 同时匹配多条规则,搜索引擎普遍采用“最长匹配优先”的原则,即路径越具体,优先级越高。举例来说,同时设置 Disallow: /api/ 和 Allow: /api/public/,由于后者更具体,public 子目录下的页面会被放行。
Sitemap 指令用于声明站点地图的完整 URL,帮助爬虫快速发现全站内容,通常置于文件末尾。Crawl-delay 用于设定爬虫抓取时的间隔秒数。需要特别指出,Google 的爬虫并不支持此指令,官方推荐在 Search Console 中配置抓取频率,而非依赖该字段。
路径理解偏差是首要陷阱。Disallow 的值对应根目录下的路径,而非完整域名地址。例如,Disallow: /private/ 屏蔽的是从站点根目录开始的 private 目录,而不是其他域名下的同名路径。对路径含义把握不准,很容易误屏蔽或漏屏蔽。
通配符的使用也需谨慎。在 Disallow 或 Allow 的值中,* 代表任意长度字符,$ 代表匹配结束符。例如 Disallow: /*.pdf$ 用于禁止所有 PDF 文件被抓取。但通配符并非所有爬虫都完整支持,部分爬虫对 * 的解析方式不同,因此建议先确认目标爬虫的支持情况再使用。
大小写敏感问题同样不可忽视。robots.txt 中规则路径是区分大小写的,/Product 与 /product 属于两个完全不同的路径。在配置时,务必与服务器上的实际目录和文件名大小写保持一致。可以先对照站点文件和 URL 逐一核实,再上线生效。
以下是一个常见组合,适用于大多数网站:
修改 robots.txt 后,建议及时验证其有效性。可以借助搜索引擎的站长工具,如 Google Search Console 的 robots.txt 测试器,检查规则是否正常解析以及目标路径是否被正确屏蔽。同时注意,若站点迁移或目录结构调整,需要同步更新此文件,避免旧规则长期生效导致抓取异常。
只能停止抓取,无法阻止已抓取页面被收录。对于包含隐私内容的页面,应叠加 noindex 元标签,并在服务端设置登录权限或访问控制。
搜索引擎按最长匹配优先选择规则。路径描述更具体的一条生效,例如 Disallow: /a/ 与 Allow: /a/b/,则 /a/b/ 下的内容被允许抓取。
会影响。若误屏蔽关键目录,核心页面无法被抓取,可能导致收录量下降,进而影响整体权重。但多数搜索引擎对此类错误的恢复较宽容,及时修正并提交验证,通常能逐步恢复。
robots.txt 配置并不复杂,但细节决定成败。建议定期检查文件内容和路径规则,结合搜索引擎的站长工具验证效果,同时在敏感区域叠加硬性安全措施。从抓取预算和站点安全两个角度出发,才能在规则与风险之间找到平衡。