对于网站运维人员,robots.txt 是一份写给搜索引擎爬虫的访问协议,用来告知哪些页面可以抓取、哪些目录必须屏蔽。配置合理,能减少无效抓取、保护后台隐私;一旦疏忽,轻则规则失效,重则影响整站收录。本文从文件放置、语法细节到冲突处理,系统梳理配置要点与常见失误。
基础前提是文件能被爬虫稳定访问。robots.txt 必须采用全小写命名,且只放在网站根目录下,例如 https://yourdomain.com/robots.txt。文件若使用了大写字母或放错了目录层级,搜索引擎会直接判定文件不存在,所有屏蔽规则全部失效,站点对外开放所有内容。
文件内部按“组”书写,每组以 User-agent 开头,后面跟随一条或多条规则,组与组之间用空行分隔。字段名不区分大小写,但路径值通常区分,书写时应保持一致。注释用 # 标记,可独立成行,也可附在规则后面,便于后期维护时理解拟定意图。
验证文件是否生效的方式是:使用浏览器直接访问 域名/robots.txt,如果页面能返回纯文本内容,说明位置与命名无误。需要留意的是,每个子域名需要各自在根目录放置独立文件,同时服务器端不应针对该文件做任何访问限制或重定向。
User-agent、Disallow、Allow 三条字段构成规则主体。User-agent 用于指定规则适用的爬虫对象,Disallow 用于声明禁止抓取的路径,Allow 用于在屏蔽范围内精确放行个别路径。
假设要屏蔽整个站点,写法如下:
User-agent: *
Disallow: /
如果仅需要禁止爬虫进入后台目录:
User-agent: *
Disallow: /admin/
这里有一个非常容易出错的地方:Disallow 末尾是否带斜杠,直接影响匹配范围。/admin/ 仅限制 admin 目录及下级页面;若漏掉了末尾斜杠写成 /admin,则所有以 admin 起始的路径都会被屏蔽,例如 /administrator、/admin-center 这样的普通页面,误伤范围远超预期。
当同一路径同时匹配 Allow 和 Disallow 时,结果并不取决于书写顺序。标准判定规则是:两条规则路径长度一致时,Allow 优先;若长度不一致,路径越长、匹配越具体的规则优先。
例如,需要封禁整个博客目录,但仅放行其中一个专题页面,可以这样设置:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
这种写法可以保证专题页正常被抓取,其余博客内容维持屏蔽状态。动手配置之前,建议先整理一份需要限制的路径清单,逐一检查是否存在重叠匹配,避免出现意外的放行或屏蔽。
另外需要注意,不同搜索引擎对规则的解析方式可能存在细微差异,配置完成后应使用各平台提供的抓取测试工具验证实际效果。
在文件末尾追加一行 Sitemap 声明(格式为 Sitemap: https://yourdomain.com/sitemap.xml),可以主动告知爬虫网站地图的所在位置,这样有助于新页面被更快发现和收录。该声明放在文件任意位置均可,但建议统一置于末尾,便于检查。
维护时还应避免以下常见做法:不要用 robots.txt 来隐藏敏感页面,因为文件本身是公开可读的,任何访问者都能通过浏览器直接查看;真正需要保密的数据,应当通过登录验证或服务器权限来控制访问。也不要将规则写得过于宽泛或过于复杂,清晰简洁的规则更能减少解析偏差。
最后,对文件做任何修改后,务必在浏览器中复查一次内容输出,并且留意爬虫实际抓取日志,一旦发现收录异常,应优先检查 robots.txt 的改动记录。
如果文件没有放在根目录或命名存在大写字母,搜索引擎会视为文件不存在,默认对整站放开抓取,所有屏蔽设置全部无效。需要将文件改为全小写 robots.txt 并放到根目录,再通过浏览器访问验证。
判断依据是规则的具体程度:路径长度相同则 Allow 优先;长度不同时,更长、更精确的规则胜出。建议在配置前先列清路径清单,逐一核对是否存在交叉匹配。
大多数搜索引擎会定期重新抓取该文件,通常在数小时到一天内生效。如果希望加快进度,可以主动提交网站地图或使用搜索引擎的抓取测试工具请求更新。生效前,旧规则仍然有效。
配置 robots.txt 时,优先确认文件命名与根目录放置,再按实际需求组合 User-agent、Disallow 与 Allow 规则,并时刻留意末尾斜杠等细节。每次调整后,都应通过浏览器和抓取测试工具反复核查,结合日志观察收录变化,这样才能在保护隐私与优化抓取之间取得平衡。