站点运营

站点运营:robots.txt 自查,把抓取范围和規則邊界寫清楚

robots.txt 是站点與搜尋引擎爬虫沟通抓取范围的第一道說明文件,寫错容易挡住正常抓取或留下不该開放的路径。本文梳理语法要点、常见誤区和一份可执行的自查清單,帮你在改版、上线新栏目或迁移域名前後,把規則邊界確認一遍,减少反复調试的成本。

站点运营

站点运营:robots.txt 自查,把抓取范围和規則邊界寫清楚

robots.txt 是一個放在根目錄下的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些先不要抓。它不复杂,但因為改動成本低、影响范围大,经常成為站点上线或改版时最容易出問题的一环:多寫一行斜杠,可能挡住整站;少寫一個目錄,可能让後台或測試环境被反复訪問。

下面這份自查思路,不追求覆盖所有细节,更适合在每次结构變動後走一遍,確認規則和實际情况對得上。

先確認它到底是什么角色

robots.txt 是建议,不是强制拦截。大部分正規搜尋引擎會遵守,但不會因此阻止其他程序訪問。它管的是能不能抓,不是能不能被收錄:一個被 Disallow 的頁面,如果被外部連結引用,仍有机會以無摘要的形式出現在结果里。

所以想让某個頁面彻底不出現,通常的做法是:允许抓取,同时在頁面上加 noindex;或者用登入驗證把它挡在外面。用 robots.txt 直接屏蔽,反而可能让 noindex 没机會被讀到。

语法和匹配規則里最容易出错的地方

路径匹配是前缀匹配

Disallow: /news 會同时挡住 /news、/newslist、/news-2024 這類以 /news 開头的地址,而不是只挡目錄。想只挡目錄本身,通常寫成 Disallow: /news/,並注意是否還有其他路径共享這個前缀。

通配符要克制使用

星号可以匹配任意字符,美元符号表示结尾,用得好能压缩規則數量,用得太随意會让規則难以复核。比如屏蔽带參數的地址时,先確認這個參數是不是真的有重复抓取的問题,再决定是全部屏蔽還是只屏蔽特定组合。

Allow 與 Disallow 的優先關系

当两條規則長度不同时,一般以更具体的那條為准。常见的寫法是用 Disallow 挡住整個目錄,再用 Allow 放行其中某個子目錄,這種组合要寫清顺序和路径,改完最好用抓取測試工具驗證一次實际结果。

一份可执行的自查清單

  1. 訪問域名根目錄的 robots.txt,確認返回的是纯文本内容,而不是 CDN 或 WAF 返回的错誤頁、登入頁或 403。
  2. 確認没有把整站寫進 Disallow,改版期間临时屏蔽的規則是否已经撤掉。
  3. 逐個核對被屏蔽的目錄:後台、用戶中心、搜尋參數頁、打印頁、篩選頁、測試目錄,這些是否确實不该被抓。
  4. 检查是否誤伤了 CSS、JS、图片等静態资源所在的路径,资源被挡住會影响頁面渲染判断。
  5. 確認規則里声明的站点地图地址是可訪問的绝對地址,且指向的内容是有效的。
  6. 翻一段時間的訪問日誌,看被挡的路径里有没有本该被抓的栏目頁或詳情頁。
  7. 把文件纳入版本管理或备份,避免誤删之後無處比對。

和其他机制的分工

  • robots.txt:控制抓取范围,减少無效請求。
  • noindex:控制是否進入索引,需要頁面被抓到才生效。
  • 站点地图:主動告知有哪些地址值得抓,和 robots.txt 配合使用更顺。
  • canonical:處理同一内容多個地址时的归並問题。

抓取频率方面,部分爬虫支持在文件里寫抓取間隔,但支持度有限,實际調速更多還是通過服務器响應速度、站点日誌观察和搜尋平台的相應設定来完成。

改動时的节奏

建议把 robots.txt 的修改和站点结构變動绑在一起:新增栏目、調整目錄、合並频道、上线新模板,都顺手看一遍。改動前一天记錄目前内容,改完先在小范围驗證,再观察一两周日誌,確認抓取量没有異常下滑。

規則文件越短越好,但每一條都要能说清楚為什么要寫。寫不清的那條,往往就是後来的麻烦。