网站上线后,搜索引擎爬虫的第一站通常是根目录下的 robots.txt 文件。这份纯文本协议并不复杂,却在很大程度上决定了爬虫的抓取范围与抓取效率。写对了,既能保护后台和敏感目录不被收录,也能让有限的抓取预算集中到有价值的内容上;写错了,轻则某些页面漏抓,重则整个站点在搜索结果中消失。
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/ 对它而言依然是不可访问的。
针对不同阶段的网站,robots.txt 的写法差异很大。以下三种模板覆盖了大部分常见需求,可以拿来即用。
内容型网站或者新上线的项目,通常希望所有页面都能被索引。只需保留以下内容:
User-agent: *
Disallow:
把 Disallow 后面的内容留空,就等于放行一切。这里最常见的手误是写成 Disallow: /,一旦发生这种情况,全站抓取会立即停止,网站的收录数据也会停滞不前。修改完文件后,建议在站长平台的抓取模拟工具里复核一遍。
如果不想让某一个搜索引擎收录本站,可以单独给它下达指令,其他爬虫不受影响:
User-agent: YandexBot
Disallow: /
需要注意的是,爬虫名称要拼写准确,不同引擎的蜘蛛名称并不一致,比如 Googlebot、Baiduspider 与 YandexBot 各不相同。写错名称会导致规则失效,务必在搜索引擎官方文档中核对名称写法。
某些应用型站点只希望爬虫进入特定模块,其他区域一律关闭,可以这样设定:
User-agent: *
Allow: /public/
Disallow: /
这种写法的目的是将爬虫引导到目标目录。需要提醒的是,Allow 和 Disallow 的匹配按最长前缀优先,所以 /public/ 的 Allow 会先于根级 Disallow 生效。如果目标目录下还有需要排除的子路径,比如临时文件目录,可以再增加一条更长的 Disallow 精确匹配。
实际维护中,很多问题并不是因为语法错误,而是源于对匹配逻辑理解不深。下面几点值得反复确认。
当发现站点页面大量未收录或者索引量突然下降时,第一件事就是检查该文件是否被意外改动。可以从下面几个角度排查:
在日常更新中,建议保留一份修改前的备份,每次调整后记录日期和变更内容,方便回滚排查。
搜索引擎通常不会因为文件内容错误直接给予惩罚,但误配置会导致页面无法被抓取,间接影响站点的收录权重与排名。大部分情况下,修正规则后耐心等待爬虫重新抓取即可恢复。
匹配遵循最长匹配原则,也就是说,哪个规则的前缀越长,哪个先生效。如果两条规则前缀长度一致,则按文件中的先后顺序,Disallow 优先于 Allow。因此建议将更具体的路径规则写在文件前面,减少歧义。
可以。使用井号 # 开头的行会被爬虫忽略,适合用来说明规则的用途或改动日期。但要注意注释只支持整行注释,行尾的 # 不一定被所有解析器识别,稳妥的做法是将注释单独放在一行。
robots.txt 看起来简单,但失之毫厘谬以千里。每次修改前先梳理清楚需要放行和屏蔽的路径,修改后立即用抓取测试工具验证一遍,并保留版本备份。合理运用 Allow 与精确前缀匹配,配合 Sitemap 指引,可以让爬虫将资源集中在高价值页面上,从而稳步提升 SEO 效果。