robots.txt配置要领与常见误用场景详解

📍 WDQWDWQD987AAAAA:216.73.216.175
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /eac79d653580.html
📄

网站上线后,搜索引擎爬虫的第一站通常是根目录下的 robots.txt 文件。这份纯文本协议并不复杂,却在很大程度上决定了爬虫的抓取范围与抓取效率。写对了,既能保护后台和敏感目录不被收录,也能让有限的抓取预算集中到有价值的内容上;写错了,轻则某些页面漏抓,重则整个站点在搜索结果中消失。

1. 字段细节:先理解再动手

robots.txt 必须放在域名根目录,例如 https://yourdomain.com/robots.txt,文件命名区分大小写,保存时建议选择 UTF-8 编码,避免中文注释乱码。每一行只放一条指令,行尾不要残留空格或者制表符。真正需要掌握的字段有以下几种:

另外,还可以在文件末尾添加 Sitemap 行,方便搜索引擎更快定位到站点地图。一个常见的组合示例:

User-agent: *
Disallow: /manage/
Allow: /manage/login/
Sitemap: https://yourdomain.com/sitemap.xml

上面的意思是全站可抓,但 /manage/ 路径被排除,其中登录页作为例外开放。要留意的是,如果某个爬虫不支持 Allow,那么 /manage/login/ 对它而言依然是不可访问的。

2. 实用模板:按需求替换路径即可

针对不同阶段的网站,robots.txt 的写法差异很大。以下三种模板覆盖了大部分常见需求,可以拿来即用。

2.1 全站允许抓取

内容型网站或者新上线的项目,通常希望所有页面都能被索引。只需保留以下内容:

User-agent: *
Disallow:

把 Disallow 后面的内容留空,就等于放行一切。这里最常见的手误是写成 Disallow: /,一旦发生这种情况,全站抓取会立即停止,网站的收录数据也会停滞不前。修改完文件后,建议在站长平台的抓取模拟工具里复核一遍。

2.2 针对某个引擎单独屏蔽

如果不想让某一个搜索引擎收录本站,可以单独给它下达指令,其他爬虫不受影响:

User-agent: YandexBot
Disallow: /

需要注意的是,爬虫名称要拼写准确,不同引擎的蜘蛛名称并不一致,比如 Googlebot、Baiduspider 与 YandexBot 各不相同。写错名称会导致规则失效,务必在搜索引擎官方文档中核对名称写法。

2.3 只开放指定目录

某些应用型站点只希望爬虫进入特定模块,其他区域一律关闭,可以这样设定:

User-agent: *
Allow: /public/
Disallow: /

这种写法的目的是将爬虫引导到目标目录。需要提醒的是,Allow 和 Disallow 的匹配按最长前缀优先,所以 /public/ 的 Allow 会先于根级 Disallow 生效。如果目标目录下还有需要排除的子路径,比如临时文件目录,可以再增加一条更长的 Disallow 精确匹配。

3. 易错环节:避免踩坑的几条经验

实际维护中,很多问题并不是因为语法错误,而是源于对匹配逻辑理解不深。下面几点值得反复确认。

4. 索引异常时如何检查 robots.txt

当发现站点页面大量未收录或者索引量突然下降时,第一件事就是检查该文件是否被意外改动。可以从下面几个角度排查:

  1. 打开浏览器访问 https://yourdomain.com/robots.txt,确认返回 200 状态码,而非 404 或 500。
  2. 逐行检查是否出现多余的 Disallow: / 或者通配符误用。
  3. 借助 Google Search Console 或百度搜索资源平台的 robots 测试工具,模拟抓取目标 URL,观察返回结果是允许还是禁止。
  4. 查看服务器访问日志中爬虫是否频繁请求该文件,异常的重复请求可能意味着规则解读出现循环。

在日常更新中,建议保留一份修改前的备份,每次调整后记录日期和变更内容,方便回滚排查。

5. 常见问题

5.1 Q1:robots.txt 写错了会不会被搜索引擎处罚?

搜索引擎通常不会因为文件内容错误直接给予惩罚,但误配置会导致页面无法被抓取,间接影响站点的收录权重与排名。大部分情况下,修正规则后耐心等待爬虫重新抓取即可恢复。

5.2 Q2:Disallow 和 Allow 同时存在时,规则怎么判断?

匹配遵循最长匹配原则,也就是说,哪个规则的前缀越长,哪个先生效。如果两条规则前缀长度一致,则按文件中的先后顺序,Disallow 优先于 Allow。因此建议将更具体的路径规则写在文件前面,减少歧义。

5.3 Q3:robots.txt 里能放注释吗?

可以。使用井号 # 开头的行会被爬虫忽略,适合用来说明规则的用途或改动日期。但要注意注释只支持整行注释,行尾的 # 不一定被所有解析器识别,稳妥的做法是将注释单独放在一行。

6. 总结

robots.txt 看起来简单,但失之毫厘谬以千里。每次修改前先梳理清楚需要放行和屏蔽的路径,修改后立即用抓取测试工具验证一遍,并保留版本备份。合理运用 Allow 与精确前缀匹配,配合 Sitemap 指引,可以让爬虫将资源集中在高价值页面上,从而稳步提升 SEO 效果。

图1 图2

nginx