搜尋抓取

robots.txt 與抓取路径:屏蔽規則改變了蜘蛛的哪一段路线

robots.txt 本身不产生抓取,却决定蜘蛛能走到哪一步。本文梳理前缀匹配带来的誤伤、哪些路径适合交给它屏蔽、渲染资源為什么不能一刀切,以及改完規則後怎样用日誌核對蜘蛛的真實抓取路线,避免屏蔽與 noindex 寫反。

搜尋抓取

robots.txt 與抓取路径:屏蔽規則改變了蜘蛛的哪一段路线

做抓取優化时,大家习惯盯内鏈和 Sitemap,却很少回头看 robots.txt。它本身不产生抓取,但它决定了蜘蛛能走到哪一步。規則寫得含糊,蜘蛛實际走的路线就會和你的预期差出一截。

它管的是抓取,不是索引

robots.txt 里的 Disallow 只表示不要抓這個 URL,不等于這個 URL 不會出現在搜尋结果里。如果某個被屏蔽的地址有足够多的站外連結,搜尋引擎仍然可能把它保留為一個没有摘要的结果頁。想让它彻底不出現,用的是頁面級的 noindex,而 noindex 生效的前提恰恰是:這個頁面允许被抓取。两者寫反,是最常见的组合错誤。

Disallow 挡住的是抓取動作,不是 URL 的传播。連結還在,URL 就還在被传递。

前缀匹配:一條規則可能带走一整個目錄

多數搜尋引擎的 robots.txt 按路径前缀匹配,而不是按完整路径精确匹配。寫 /tag 时,/tag、/tag/xxx、/tags 這類路径都可能被一起挡住——原本只想挡聚合頁,结果连正文章节頁也進不去。寫規則前,先把站点里所有以该字符串開头的路径列一遍,再决定要不要加斜杠收窄范围。

适合交给 robots.txt 的路径

  • 站内搜尋结果頁,參數组合几乎無限,抓取價值低;
  • 排序、篩選、打印、分享等衍生版本;
  • 後台、測試、临时目錄等不该被訪問的地址;
  • 容量巨大的日歷归档、标簽聚合頁的分頁尾部。

這些路径的共同点是:數量大、内容重复、對用戶没有獨立價值。把抓取预算留给正文,比让蜘蛛在參數组合里打轉更划算。

別把渲染需要的资源一起挡掉

如果頁面依赖 CSS 和 JS 才能呈現出主要内容與連結,把 /assets、/static 這類目錄整段屏蔽,蜘蛛拿到的就是半成品。它看不到渲染後的结构,内鏈也走不通,抓取路径會在這里断掉。屏蔽規則要具体到文件或目錄,而不是為了省事一刀切掉整個静態资源域。

改完規則,用日誌看路线

規則上线後,別只看文件有没有寫错,要去服務器日誌里看蜘蛛的實际訪問记錄:被挡住的目錄是否還有請求,有則說明規則没生效或被忽略;正文頁面的抓取量是否上升;原来经過聚合頁到達的深层頁面有没有失去入口。抓取路径是一條鏈,挡住中間一环,後面的頁面可能再也走不到,必要时给它們补一條内鏈或放進 Sitemap。

几個容易忽略的细节

  • robots.txt 本身要返回 200,且不要返回 HTML 頁面;
  • 路径区分大小寫,寫法要和實际 URL 一致;
  • 避免多條互相矛盾的規則同时存在;
  • 整站禁止抓取只适合临时下线,長期使用等于放弃自然流量。

robots.txt 是一道闸门,不是優化手段。它负责把不值得抓的東西挡在外面,真正决定蜘蛛能走多遠的,仍然是内鏈结构、Sitemap 和服務器稳定性。開合這道闸门之前,先想清楚你要让蜘蛛看到什么。