站点运营

站点运营:robots.txt 自查,別让一條屏蔽規則挡住整站抓取

robots.txt 是整站抓取的第一道闸门,寫错一行就可能让蜘蛛進不来。這篇整理一份可落地的自查清單,從文件可訪問性、Disallow 誤伤、通配符與匹配優先級,到静態资源屏蔽、Sitemap 声明和上线前驗證,帮你在改動前後把風險拦住。

站点运营

站点运营:robots.txt 自查,別让一條屏蔽規則挡住整站抓取

robots.txt 是站点對外發布的第一份抓取說明,位置固定、语法简單,所以经常被顺手改動。它的影响面却不小:一條寫错的 Disallow,可能让蜘蛛在很長一段時間里不再進入站内。下面這份自查清單,适合在每次上线、改版、迁移前後過一遍。

先確認文件本身能被正常讀取

在谈規則之前,先確認文件没坏:

  • 地址必须是根目錄下的 /robots.txt,放在子目錄里無效;
  • HTTP 狀態碼返回 200,内容類型為 text/plain;
  • 如果返回 404,蜘蛛會当作没有任何規則,全站預設可抓;如果是 5xx,多數蜘蛛會暂时放缓或停止抓取,等你恢复;
  • 儲存时去掉 BOM,避免出現中文标点或全角冒号,這類字符會让整條規則失效。

最常见的坑:一條規則屏蔽全站

測試环境遗留的 Disallow: / 被带到线上,是發生频率最高的事故。它不需要错別字,也不需要语法错誤,一行就能生效。

上线前先打開 /robots.txt,把每一行 Disallow 念一遍,確認它屏蔽的路径确實是你要屏蔽的,而不是複製粘贴留下的歷史配置。

搞清通配符和匹配優先級

規則冲突时,按匹配長度决定,而不是按书寫顺序:

  • * 代表任意字符,$ 代表地址结尾;
  • Allow 和 Disallow 同时命中时,匹配字符串更長的那條生效;
  • 長度相同时,Allow 優先。

例如 Disallow: /search/ 與 Allow: /search/help 同时存在时,/search/help 會被放行,因為它更長。想屏蔽带參數的地址,可以用带 * 的寫法覆盖一批路径,但要先在小范围驗證,避免顺手誤伤正常栏目。

別把 CSS、JS、图片一起挡住

不少模板會把 /static/、/assets/、/uploads/ 直接寫進 Disallow,理由是這些不算内容頁。但蜘蛛需要讀取這些资源才能還原頁面样貌,资源被挡之後,它看到的可能是一個残缺頁面,對内容判断並不友好。屏蔽资源目錄前,先確認站点有没有替代方案,或者只屏蔽其中体积明顯異常的部分。

Sitemap 声明與多组 UA 規則

  • Sitemap 使用完整绝對地址,寫一行即可,不必在每個規則组里重复;
  • 针對不同 UA 寫多组規則时,同一個 UA 只會讀取第一组匹配到的規則;
  • 除非清楚後果,不建议對主流搜尋引擎做差异化屏蔽。

上线前怎么驗證

  1. 用站長平台自带的 robots 檢測工具,輸入几條真實 URL,看结果是允许還是屏蔽;
  2. 用命令行請求一次文件,確認响應头和正文都没有異常;
  3. 從被屏蔽的目錄里抽一個地址,確認它确實不该被抓;
  4. 改動後观察一到两周的抓取日誌和索引量,不要指望立刻看到结果。

最後提醒一句:robots.txt 管的是能不能来,不管要不要收錄。真正不希望出現在结果里的頁面,還是應该用 noindex 處理,因為被屏蔽的頁面,蜘蛛也讀不到你寫在頁面里的 noindex。