網站收錄

robots.txt 誤屏蔽:几類常见情况與排查顺序

很多收錄問题查到最後,根因在 robots.txt。它只控制抓取,不等于從索引里移除。本文梳理全站 Disallow 残留、静態资源被挡、規則寫得太宽、與 noindex 冲突這几類常见誤屏蔽,並给出一套從 robots.txt 可訪問性到日誌驗證的排查顺序。

網站收錄

robots.txt 誤屏蔽:几類常见情况與排查顺序

robots.txt 管的是抓取,不是收錄

很多收錄問题查到最後,根因在 robots.txt。它的作用是告诉蜘蛛哪些路径不要抓,但它並不等于把 URL 從索引里刪除。一個地址被 Disallow 之後,蜘蛛只是不去讀頁面内容;如果站外別處有指向它的連結,它仍可能作為一條没有摘要的记錄存在于索引中。

更麻烦的是,robots.txt 的生效是静默的。頁面本身一切正常,返回 200,内容也没有問题,只是蜘蛛從一開始就没来過。

几種常见的誤屏蔽

全站 Disallow 忘了删

測試环境、预發布环境切換时留下的 Disallow: / 最容易出問题。表現是整個站点收錄量長期為零或持續下滑,服務器日誌里几乎看不到蜘蛛請求。检查方式很直接:用浏览器打開 /robots.txt,看是不是第一行就把整站挡住了。

屏蔽了 CSS、JS 等静態资源

為了让日誌干净,有人會把 /assets/、/static/、/*.js 之類加進 Disallow。對依赖 JavaScript 渲染的頁面来说,這會让蜘蛛拿到一個空壳。要么放開這些目錄,要么接受渲染不全的结果,两者只能選一個。

規則寫得太宽,命中了想收錄的目錄

比如想屏蔽 /search/,寫成 Disallow: /sea,就會连带屏蔽 /seasonal/、/search-tips/ 這類頁面。robots 的匹配是前缀式的,路径寫得越短,誤伤面越大。

把分頁、篩選頁一刀切

篩選參數頁确實常常需要收敛,但如果方式選错,比如把带參數的商品頁全部屏蔽,同时頁面上又没有其他入口,這些商品就可能完全無法被發現。

robots 與 noindex 的冲突

一個常见誤解是:被 robots.txt 屏蔽的頁面,再加個 noindex 就能确保不被收錄。實际情况恰恰相反——蜘蛛不抓取頁面,就讀不到頁面里的 noindex 标簽。想彻底移除,要么放開抓取让它讀到 noindex,要么直接返回 410 或 404,也可以用站長平台提供的移除工具。

顺序是:先允许抓取,再让頁面自己表達 noindex,等索引里消失之後,才考虑重新屏蔽。

按這個顺序排查

  1. 確認 /robots.txt 本身能正常訪問,返回 200 且内容是目前版本。返回 5xx 时蜘蛛會保守處理,可能暫停抓取。
  2. 检查目标路径有没有被任何一條 Disallow 規則命中,注意前缀匹配、通配符 * 和 $ 结尾的寫法。
  3. 用日誌或抓取統計確認蜘蛛是否真的請求過這些 URL。没有請求,問题就在抓取层,不在内容层。
  4. 检查 X-Robots-Tag 响應头。有些屏蔽不寫在 robots.txt 里,而是服務器统一加上的。
  5. 誤屏蔽修复後,在站長平台提交几條代表性 URL,观察抓取是否恢复。

修复之後別急着下结论

放開 Disallow 並不等于马上恢复收錄。抓取频率的回升需要時間,尤其是長期没被抓過的目錄。這段過渡期里,比較稳妥的做法是先把重要的入口頁和站内連結补上,让蜘蛛有明确的路径可走,再观察日誌里請求量的變化趋势,而不是盯着收錄數字一两天内的跳動。

另外,robots.txt 的改動本身也有缓存期,不同引擎重新讀取的频率並不一样。改完之後留出一段時間再复查,比反复修改規則要有效得多。