站点运营

站点运营:robots.txt 自查,一條規則可能挡住整個目錄

robots.txt 通常只有几十行,却是抓取环节最容易出错的一环。本文梳理文件位置、语法分组、通配符、Sitemap 声明等自查要点,列出几類常见誤配场景,並给出一套改動後的驗證流程,帮助运营者避免無意中屏蔽正常目錄。

站点运营

站点运营:robots.txt 自查,一條規則可能挡住整個目錄

robots.txt 是站点和搜尋引擎之間最基础的一份约定文件,一般只有几十行,改起来几乎零成本,但也因此最容易被随手改坏。它不决定頁面能否被收錄,只影响蜘蛛能不能抓,所以寫错之後往往不會立刻报错,而是等抓取量慢慢下滑才被察觉。

先明确它管什么、不管什么

robots.txt 控制的是抓取范围,不控制索引结果,也不能替代權限校驗。用它挡後台、挡測試目錄只是權宜之計,只要有人贴出連結,内容仍然可能出現在结果里。真正敏感的内容應该靠登入態、權限系統或 noindex 處理。

逐項自查清單

位置與可訪問性

  • 文件必须放在域名根目錄,子目錄下的 robots.txt 不會被讀取。
  • 直接訪問應返回 200 與纯文本類型,不要出現多級跳轉、驗證碼頁或登入頁。
  • 检查 CDN、WAF 是否對 robots.txt 做了限流或拦截,返回 403、503 时對方可能按不可用處理。
  • 確認 www 與非 www、http 與 https 各版本都能讀到同一份内容,或至少各有可用的一份。

语法與分组

  • User-agent 分组之間用空行分隔,同一分组的規則要寫在一起,否則後面的規則會失效。
  • 規則名统一使用常见寫法,避免大小寫混排带来的解析差异。
  • Allow 與 Disallow 同时命中时,一般以更具体(路径更長)的規則為准,寫規則时按這個思路检查。
  • 某條規則留空,例如只寫 Disallow: ,代表不限制,不要用它来表達“禁止全部”。

通配符與結束符

* 匹配任意字符,$ 表示路径結束,這两者配合不当最容易誤伤。比如 Disallow: /*.pdf 會挡住全站 PDF,Disallow: /tag/ 會连同 /tags/ 之類前缀相同的路径一起命中。寫完最好用几個真實 URL 逐一過一遍。

Sitemap 声明

在文件末尾寫明站点地图地址是常见做法,注意地址要與實际可訪問的版本一致,避免 http、www、舊域名混用。若站点有多個子域或分站,可以分行列出多份。

抓取频率

Crawl-delay 的支持情况因搜尋引擎而异,不宜作為限流主力。真正想控制压力,更應该從缓存策略、响應時間和服務器容量入手。

几種常见誤配

  • 測試环境的規則被同步到正式站,例如整站禁止,上线後無人复查。
  • 屏蔽目錄时漏了细节,本想挡 /search,结果连 /search-guide 這類正常栏目一起挡住。
  • 用 robots.txt 處理重复内容,以為不抓就不會重复,其實更合适的手段是 canonical。
  • 多份文件互相覆盖,改版时留下了舊站点的 robots.txt,新目錄規則缺失。

改動後的驗證流程

  1. 在本地或预發环境先寫好規則,用真實 URL 逐一核對命中情况。
  2. 上线後直接訪問根目錄文件,確認内容與预期一致,没有讀到缓存舊版本。
  3. 用日誌观察几天,看被屏蔽目錄的抓取請求是否下降、目标目錄是否正常上升。
  4. 把本轮改動的規則、原因和日期记在运维文档里,方便下次回溯。
不建议频繁微調 robots.txt。每次改動都會改變蜘蛛的抓取路径,短期内抓取資料波動属于正常現象,观察周期最好放宽到一周以上。

多环境與改版的注意事項

如果站点有測試、预發、正式三套环境,建议让正式环境的 robots.txt 單獨维護,不參與代碼合並,避免被覆盖。站点改版更換目錄结构时,除了更新規則文件,還要同步检查内鏈、站点地图和各處硬编碼的路径,避免規則指向已经不存在的目錄。

整体上,robots.txt 的自查不需要多高深的技巧,重点在于:確認它没有挡住该抓的目錄,也没有被当成安全工具使用,並且每次改動都有记錄可查。把這些做到位,它就是一個安静的基础设施,而不是一個随时可能踩到的坑。