搜索引擎爬虫来到一个网站时,最先查看的文件往往就是根目录下的 robots.txt。它像一份精简的访客须知,用几行纯文本告诉爬虫哪些路径可以光顾,哪些路径必须绕行。如果这个文件设置合理,不仅能保护后台和隐私页面不被索引,还能引导爬虫将抓取精力集中在关键内容上,避免无谓的配额浪费。
robots.txt 文件必须存放在站点的根目录下,例如 https://yourdomain.com/robots.txt。文件名、路径和目录名都区分大小写,编辑时建议采用 UTF-8 编码并避免行尾出现多余空格。想要写出精准的规则,先要弄清几个基础指令的实际语义:
除了上面三种指令,用 Sitemap 字段指明网站地图的 URL 也很常见。一个典型的配置组合如下:
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://yourdomain.com/sitemap.xml
这段规则的意思是:全站默认允许抓取,但是 /admin/ 目录被禁止,其中 /admin/public/ 是例外,可以正常访问。这里有个容易踩的坑:如果某个爬虫不支持 Allow 指令,它只会参考 Disallow 的限制,那么 /admin/public/ 对这类爬虫来说依然是禁区。判断某个字段是否被某个搜索引擎支持,最好的办法是查看其官方文档,而不是凭猜测。
不同站点的抓取需求差异很大,下面是三种覆盖面较广的配置方案,可以直接参考后替换为自己的实际路径。
对于内容型网站或刚上线的新站,通常希望所有页面都能被搜索引擎收录。这时只需一行规则即可:
User-agent: *
Disallow:
其实将 Disallow 这一行直接删掉效果也是一样的,留空值表示不限制任何路径。但一定小心,绝不能写成 Disallow: /,否则所有爬虫都会瞬间被挡在门外,站点的收录进度将立刻停止。每次修改完文件后,建议使用站长平台自带的抓取测试工具确认一下最终效果。
如果某个搜索引擎的抓取行为不符合预期,或者你出于版权等原因不希望它收录网站,可以单独为它写出专属规则:
User-agent: Bingbot
Disallow: /
这样设置之后,其他爬虫的访问完全不受影响。但有一个细节需要格外留意:爬虫的名称必须拼写准确,比如 Googlebot、Baiduspider、Sogou 蜘蛛的标识各不相同,写错了名字规则就不会生效。在这种场景下,可以在搜索引擎的官方文档里核对一下准确的爬虫名称。
若是站点功能较为单一,比如只提供一个管理后台或 API 接口,那么可以反其道而行,直接封锁全站但放开指定目录:
User-agent: *
Disallow: /
Allow: /api/
Allow: /dashboard/
同样需要注意,Allow 指令能否生效取决于爬虫的支持程度。如果某个搜索引擎不识别 Allow,它只会看到 Disallow: /,整个站点便不会获得任何抓取机会。因此这种写法更适用于你确认过抓取机制的平台。对于不确定是否支持 Allow 的爬虫,还可以考虑将该目录放到其他可控路径下,或者采用不同的目录规划来规避风险。
实际运营中,不少站点的规则不止几行,需要同时限制后台、临时目录、搜索页等。下面是一个稍显复杂的例子:
User-agent: *
Disallow: /wp-admin/
Disallow: /tmp/
Disallow: /search?q=
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yourdomain.com/sitemap_index.xml
要注意,这里的 Disallow 不只是匹配文件夹,也能匹配带参数的查询链接,比如 /search?q= 就能阻止带搜索参数的 URL 被收录。同时,Allow 只放开了某个具体的文件或子路径,权限范围很精确。还有一点值得留意:robots.txt 的内容越多,出错的概率也就越大。所以规则应保持精简,凡是默认允许的区域就不必重复写入。也不要试图在文件里加入注释来解释逻辑,毕竟大多数爬虫的解析重点只在指令本身。若发现某个规则始终不生效,建议先检查是否还有其他上级目录的规则在起冲突。
robots.txt 并非写完就能一劳永逸。网站结构改版、目录调整、新功能上线,都可能让原有规则过期或失去意义。改完规则后,应该养成及时验证的习惯:
另外,有些站点还会部署 CDN 或缓存层,robots.txt 可能被缓存,导致修改后不能立即从源站读取,这一现象很容易被误判成配置无效。遇到这种情况,可以先绕过缓存直连源站确认文件内容,再决定是否需要刷新缓存。
差异非常明显。例如 Disallow: /admin 会同时匹配 /admin、/admin/ 以及以 /admin 开头的所有路径;而 Disallow: /admin/ 仅匹配 /admin/ 目录内部的内容,页面 /admin 本身不在禁止范围内。判断时建议使用浏览器实际访问一下路径,确认最终匹配结果。
不会。robots.txt 的作用是阻止未来的抓取和收录行为,它无法主动从搜索引擎索引中移除已经存在的页面。若要清除已有收录,需要借助站长平台的删除 URL 工具或提交死链来进一步处理。而对于可能已经缓存的旧版 robots.txt,搜索引擎通常会在几天内自动重新读取并更新。
效果有限。robots.txt 只约束遵循规则的搜索引擎爬虫,它既拦不住普通用户直接访问文件链接,也无法阻止某些不使用该协议的采集工具。如果要保护站内资源,建议配合服务器权限控制、防盗链设置或路径加盐等方式来实现更强的限制。
robots.txt 虽然只是一个几行文字的纯文本文件,却在爬虫与站点之间扮演着重要的调度角色。合理利用 User-agent、Disallow 和 Allow 三个指令的组合,可以让搜索引擎的抓取效率大幅提升。在实际操作中,建议每次改动后都去站长平台做一次测试,验证规则是否符合预期。同时也应根据网站结构调整定期复核文件内容,删除多余规则,避免因为层层叠加的指令影响正常的抓取与收录。