对于任何网站运营者来说,robots.txt 是根目录下一个无法回避的配置文件。它用寥寥数行文本向搜索引擎蜘蛛传达指令:哪些路径开放抓取,哪些区域应当回避。一旦配置得当,搜索引擎的抓取资源会集中流向核心页面,新内容的收录效率也会明显提升;反之,语法错误或路径误写则可能引发整站权重下降,甚至被移出索引的严重后果。下面我们逐步拆解这份文件的关键语法,同时梳理那些容易出错的细节。
robots.txt 面向的是网络爬虫,你可以通过输入“域名/robots.txt”直接在浏览器中查看它。它的作用是引导爬虫的访问路径,但页面最终是否能进入搜索引擎的索引库,并非这份文件所能决定。若你希望某个页面彻底从搜索结果中隐去,应当采用 noindex 元标签。robots.txt 仅影响爬虫是否前来抓取,对于已被抓取过的页面是否被纳入索引,它并没有发言权。举个例子,一个被 robots.txt 屏蔽的页面,假如外部有大量链接指向它,搜索引擎依旧可能将其收录,只不过展示的快照内容可能源于其他路径。
同时需要牢记,这份协议建立在爬虫自愿遵守的基础上。主流搜索引擎的蜘蛛通常会遵循约定,但许多恶意采集程序或第三方抓取工具并不会理会这些规则。凡是涉及用户隐私、交易数据、后台管理入口等敏感区域,务必叠加登录验证、IP 白名单或防火墙等安全措施,绝不能将安全防线完全寄托在这份“君子协定”上。
robots.txt 由若干规则组构成,每一组必须以 User-agent 字段开头。所有字段一律遵循“名称: 值”的格式,冒号使用英文半角,冒号后保留一个空格是推荐写法。虽然大多数爬虫对格式略有宽容度,但规范书写能规避未来可能出现的解析异常。
这一行声明了当前规则组适用于哪类爬虫。若仅想约束谷歌的搜索蜘蛛,可写成 User-agent: Googlebot;若希望所有搜索引擎的爬虫统一执行,则用通配符 User-agent: *。你可以设置多个规则组,针对不同爬虫实施差异化管理,例如对谷歌开放更多权限,同时收紧密对必应(Bing)的限制。
Disallow 声明禁止访问的路径,Allow 声明允许访问的路径,二者经常配合使用。一个容易被忽略的细节是:当 Disallow 后面没有值(即形如 Disallow:),意味着清除所有限制,爬虫可以抓取全站内容。当同一 URL 同时命中多条规则时,搜索引擎默认遵循“最长匹配优先”的原则——路径越长越具体,优先级越高。比如同时声明了 Disallow: /api/ 和 Allow: /api/public/,因为后者路径更具体,所以 public 子目录下的内容会被放行。
Sitemap 指令用来声明站点地图的完整链接,方便爬虫快速掌握全站结构,通常写在文件末尾。Crawl-delay 则用于设定爬虫抓取的时间间隔,单位是秒。需要特别提示的是,谷歌的爬虫并不认可 Crawl-delay 指令,它更建议通过 Search Console 后台的抓取频率设置来控制节奏。
第一个高频问题出现在路径理解上。Disallow 和 Allow 后面的值均为路径前缀,而非完整 URL。例如,Disallow: /admin 会同时屏蔽 /admin、/administer 等以该字符串开头的路径。若只想屏蔽 admin 目录本身,应写成 Disallow: /admin/,斜杠的意义不可小觑。
第二个常见误区是通配符的使用。标准的 robots.txt 语法支持 * 和 $ 两个符号,* 代表任意字符序列,$ 代表路径结尾。比如 Disallow: /*?from= 能屏蔽所有带特定参数的动态链接,而 Allow: /public/$ 则精确匹配以 /public/ 结尾的路径。但并非所有爬虫都完全支持通配符,谷歌和必应支持,部分小型搜索引擎可能忽略,因此不要过度依赖这些符号。
第三个细节是大小写敏感。路径匹配是区分大小写的,/Product 和 /product 会被视为两个不同路径。为降低出错率,建议统一使用小写字母书写路径,或在配置前先核对目录的真实命名。
在修改 robots.txt 之前,先确认根目录下是否已存在该文件,避免重复创建导致规则冲突。编辑时,尽量使用纯文本编辑器。
配置完成后,务必通过浏览器访问 域名/robots.txt 检查文件是否正常输出。同时,可以利用搜索引擎站长工具中的 robots 测试功能,模拟爬虫视角验证规则是否生效,这是最直接的校验手段。
这是因为 robots.txt 只负责阻止爬虫抓取,并不控制页面的索引状态。如果该页面已被搜索引擎收录,且外部存在大量链接,搜索引擎仍可基于链接信息保留索引记录。要让页面彻底移出搜索结果,需在页面 HTML 中添加 noindex 标签,并等待搜索引擎重新抓取。
搜索引擎遵循“最长匹配优先”原则。例如规则中同时有 Disallow: /shop 和 Allow: /shop/checkout,那么 /shop/checkout 路径下的内容因匹配更长、更具体的规则而会被放行。合理利用这一逻辑,可以在大范围屏蔽的同时精准开放子目录。
并非如此。Crawl-delay 指令在雅虎和早期爬虫中较常被支持,但谷歌已明确不采纳。对于百度,该指令的兼容性也不稳定。若要控制谷歌的抓取频率,应通过 Search Console 中的抓取速率设置进行调整。
robots.txt 的配置并不复杂,但细节决定成败。明确文件的边界,理解路径匹配的优先级,留意大小写与通配符的运用,是避免踩坑的三步关键。配置完成后,记得用站长工具做一次全面验证,确保规则按预期生效。
同时,不要将这份文件视为安全机制。对于敏感目录,务必叠加身份验证与访问控制。稳妥的配置思路是:先收紧默认策略,再按需放行必要的路径,最后通过测试工具复查,这样既能保证抓取效率,也能守住关键资源的安全底线。