搜索引擎蜘蛛在访问网站时,最先执行的往往不是抓取页面,而是读取根目录下的 robots.txt 文件。这个纯文本文件相当于一份"抓取许可清单",它告诉搜索引擎哪些路径可以访问,哪些区域必须绕行。正确配置 robots.txt 不仅能阻止后台数据、临时文件等敏感信息被收录,还可以有效规避无效抓取对服务器带宽的消耗,使爬虫集中精力处理高质量的页面内容。
robots.txt 文件必须放置在域名的根目录,例如 https://yourdomain.com/robots.txt。文件需采用 UTF-8 编码,且指令严格区分大小写,每行只能书写一条指令。主要包含以下几个关键字段:
另外,还可以在文件中附加 Sitemap 行,用来标记站点地图的存放地址。以下是一个典型的配置样例:
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://yourdomain.com/sitemap.xml
这段配置的意思是:全体搜索引擎可以访问站点,但 /admin/ 路径被排除;不过,位于其中的 /admin/public/ 子路径又被重新放开。这里有一个高频易错点——Allow 指令仅在部分搜索引擎中生效,如果不支持,爬虫仍会依照 Disallow 的设定屏蔽路径,导致原本打算公开的子目录也无法访问。
依据网站阶段定位的不同,robots.txt 的写法也需要灵活调整。以下整理了三种常见的场景与对应方案。
对于内容分发站或正处在起步期、急需积累收录量的新站,通常希望所有页面均可被抓取。此时保留 Disallow 为空即可:
User-agent: *
Disallow:
如果完全删除 Disallow 行,效果也等同于全站放行。最大的安全隐患在于错误写成 Disallow: /,一旦出现这一设置,所有爬虫都会对整站拦截,收录立即停止。核对时应确认冒号后没有任何字符残留。
若你基于流量来源或业务需求,不希望某一搜索引擎收录内容,可以为该爬虫单独配置一套规则,而不干扰其他搜索蜘蛛的正常抓取:
User-agent: Baiduspider
Disallow: /
如此设置后,Baiduspider 将无法获取任何内容,而其他搜索引擎的爬虫权限不受波及。注意不同爬虫的用户代理名称差异较大,例如 Google 的为 Googlebot、Bing 的为 Bingbot,且名称不区分大小写。
绝大多数网站都需要保护后台管理端、缓存文件、日志页面及搜索结果页等地址,这些内容既缺乏展示价值,还可能泄露系统信息。可参照下面写法:
User-agent: *
Disallow: /wp-admin/
Disallow: /cache/?#
Disallow: /search?
Disallow: /temp/
在这种配置下,所有官方爬虫都被禁止访问以上路径。但务必明确,robots.txt 仅对恪守协议的搜索引擎有效,恶意攻击者或特定黑客间谍爬虫并不会遵守该规则,因此它不能替代带宽安全控制或身份认证机制。
写好 robots.txt 只是第一步,真正考验在于验证是否符合预期。以下几个实操提示能帮你避免常见故障:
建议每隔数周查看文件日志,若发现爬虫访问量异常增大,及时补充遗漏的目录规则,也便于发现未禁用的动态 URL 参数。
除了基本指令,robots.txt 还能承担提示站点地图的作用。在文件中添加 Sitemap 声明并不是强制的,但能帮助搜索蜘蛛更快定位地图位置,尤其适合刚建站且尚未获得外链引荐的站点。若同一域名下绑定了多个子域名,则每个子域名都需要独立维护 robots.txt,因为不同子域名的根目录彼此独立。
更改后的规则不会立即生效。搜索引擎通常以一定周期重新抓取该文件,短则数小时,长则数天。若你希望加快进度,可以在 Google Search Console 或百度搜索资源平台中提交 robots.txt 更新请求,手动触发重新抓取。
对于支持 Allow 的搜索引擎(如 Google)而言,匹配规则遵循最长匹配优先原则。如果 Allow 路径比 Disallow 路径更长且匹配成功,则允许抓取;反之则继续禁止。对于不识别 Allow 的爬虫,Disallow 规则依然优先,因此建议仅使用 Allow 做精准放行。
文件体积过大(超过 500KB)可能被搜索引擎直接忽略后续指令。每个 User-agent 指令组应当语义清晰,避免重复路径声明,同时尽量将不常用爬虫的规则合并,保持文件短小易读。
robots.txt 虽只是一个微小文本文件,却直接影响站点收录效率与服务器负载。建议你从全站放行开始,逐步屏蔽后台、脚本与搜索页等敏感路径,并在每次改动后通过搜索平台测试工具复核规则。同时,保持文件简洁,随时关注爬虫日志,才能让搜索引擎在正确的范围内高效抓取你的内容。