站点运营

站点运营:robots.txt 自查,別让一行規則把整站關在门外

robots.txt 常年躺在根目錄,少有人打開。本文梳理它的作用邊界與常见寫法:分组規則、Allow 與 Disallow 的優先級、通配符用法、Sitemap 声明,並提供一套可落地的自查流程,帮你避免一行規則誤伤整站抓取。

站点运营

站点运营:robots.txt 自查,別让一行規則把整站關在门外

robots.txt 是站点里最容易被忽略的文件之一。它通常安静地躺在根目錄,几個月没人打開,改一次也许只要几分钟,但寫错一行,影响范围常常覆盖全站。正因為不常被看到,它更需要被定期拿出来對照检查。

先弄清它管什么,不管什么

机器人协议不是强制标准,主流搜尋引擎會遵守,但並非所有抓取者都會照办。更關键的一点是:Disallow 只表示“不要抓取”,不等于“不要收錄”。如果某個頁面需要保留在站内,却希望它不出現在搜尋结果里,應该用 noindex,並保證该頁面允许被抓取,否則标簽根本讀不到。用 Disallow 去處理這類需求,往往适得其反。

逐項检查常见寫法

User-agent 分组是否寫對

  • 每组以 User-agent 開头,後面跟本组专属規則,组與组之間的規則不會互相繼承。
  • 组名大小寫不敏感,但拼寫必须准确,寫错的组等于没有生效。
  • 某一组只寫了 Allow 却漏寫 Disallow 时,要意识到預設狀態是允许抓取。

Allow 與 Disallow 的優先級

同一條路径同时命中 Allow 和 Disallow 时,一般以更具体、也就是更長的規則為准;長度相同时,宽松的 Allow 通常優先。這條判断经常被凭印象誤判,改完之後務必用工具實际驗證一遍。

通配符與結束符

  • * 匹配任意字符,$ 表示路径结尾,例如 /*.pdf$ 和 /*.pdf 覆盖的范围並不相同。
  • 把 Disallow: / 寫進某一组,等于對该组關閉整站,上线前要確認這行不是誤留。
  • 路径区分大小寫,/Search/ 和 /search/ 可能是两個不同地址。

一套可执行的自检流程

  1. 用浏览器直接打開 /robots.txt,確認返回 200、内容是纯文本,而不是把 404 頁面或首頁 HTML 当内容返回。
  2. 逐行讀一遍,重点看有没有整站拦截、有没有誤伤资源目錄(如 /assets/、/uploads/),有没有漏掉本该放行的路径。
  3. 確認 Sitemap 声明寫的是完整地址,且與實际提交的地址一致。
  4. 使用搜尋引擎官方提供的 robots.txt 測試工具,輸入几個有代表性的 URL,看實际判定结果是允许還是拦截。
  5. 到服務器日誌里抽查几個被拦目錄,確認近期没有来自正常蜘蛛的大量被拒记錄。

几個容易踩的坑

  • 用 robots.txt 屏蔽後台、測試頁或參數頁,却忘了這些地址仍可能被外部引用,最後以無描述的形式出現在结果里。
  • 站点搬到了子目錄,文件里的路径却還是舊结构。
  • Crawl-delay 只被部分搜尋引擎支持,寫很大的值會拖慢發現速度,一般不建议随意調整。
  • 改完規則不做測試,等發現收錄量下滑才回头排查。
把 robots.txt 当成一份“通行名單”来维護:明确哪些必须放行,哪些确實需要拦截,剩下的交给内容质量去决定。

结语

不需要频繁改動它,但建议每季度、以及每次站点结构調整之後检查一次,並留下一份歷史版本。規則越少越清晰,出問题时也越容易定位。