站点运营

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

robots.txt 寫错一行,可能让搜尋引擎蜘蛛無法抓取整站或關键目錄,新頁面难以被發現。本文梳理常见誤配,包括全站禁止、通配符誤伤、静態资源被挡、Sitemap 声明错誤等,並给出一套可执行的自查步骤,帮助站点运营在改版和上线前提前排雷。

站点运营

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

robots.txt 是站点與搜尋引擎蜘蛛之間的第一道沟通文件。它不复杂,但正因為简單,很多站点在上线、改版、迁移时随手改一行,就可能让蜘蛛停止抓取整站或某個栏目。等到發現新内容迟迟不被發現,才回头检查,往往已经過去几周。

這篇文章不谈玄学,只围绕一個目标:把 robots.txt 的常见誤配找出来,並给出可重复执行的检查流程。需要先明确一点,robots.txt 是抓取指令,不是訪問控制。它不能保護隐私,也不能阻止恶意抓取,敏感目錄應该用登入權限或服務器規則来隔离。

為什么 robots.txt 容易出错

它有几個特点:文件小、改動快、影响面大、生效不直观。很多 CMS 或框架會預設生成一份 robots.txt,运营人員可能從未完整看過;測試站和生产站共用模板时,也容易把測試环境的禁止規則带到线上。

更麻烦的是,不同搜尋引擎對通配符、Allow 規則、Crawl-delay 的支持程度並不完全一致。你以為只挡住了一個參數頁,實际可能连栏目列表一起挡了。

常见誤配清單

  • Disallow: /:最嚴重的一行。它表示禁止抓取整站。常见于測試站複製到生产,或临时關閉抓取後忘记刪除。
  • 路径寫错大小寫:robots.txt 中的路径通常区分大小寫。你寫 /News/,實际目錄是 /news/,規則可能不生效或誤伤。
  • 通配符誤伤:Disallow: /*? 想挡參數頁,却可能把带查询參數的正常分頁、篩選頁一並挡掉。
  • 挡住 CSS、JS、图片:如果禁止抓取静態资源,蜘蛛渲染頁面时可能看不到完整内容,影响對頁面质量的判断。
  • Allow 與 Disallow 冲突:多數搜尋引擎采用最長匹配優先,而不是简單按顺序。規則越多,越难靠肉眼判断。
  • Sitemap 地址寫错:协议、域名、路径任一错誤,都會让声明失效。Sitemap 應使用完整绝對地址。
  • Crawl-delay 設定過大:部分蜘蛛不支持该指令;即使支持,過大的延迟也會减少單位時間内的抓取量。
  • 多份 robots.txt 並存:例如根目錄一份、子目錄一份,容易互相矛盾。蜘蛛通常只讀取根目錄的那一份。

可执行的自查步骤

  1. 直接訪問文件:在浏览器打開 https://你的域名/robots.txt,確認返回 200,内容是最新版本。注意不要被 CDN 或缓存返回舊文件。
  2. 检查 User-agent 分组:確認针對 * 和主要搜尋引擎蜘蛛的規則是否符合预期。不要留下空分组或拼错的 User-agent。
  3. 逐條讀 Disallow 與 Allow:對每條規則,問一句“這條會挡住我想让蜘蛛抓的 URL 吗”。尤其注意根路径、栏目路径和參數通配符。
  4. 用官方測試工具模拟:主流搜尋引擎都提供 robots.txt 測試工具。輸入具体 URL,看结果是允许還是禁止。不要只凭肉眼判断。
  5. 核對 Sitemap 声明:確認地址可訪問、内容有效,並且與站点地图文件實际位置一致。
  6. 结合服務器日誌驗證:改動後观察蜘蛛對目标目錄的訪問量。如果關键目錄的抓取請求明顯减少,需要复查規則。
  7. 纳入上线检查清單:每次改版、迁移、新增子站时,把 robots.txt 列為必查項,避免模板差异導致誤封。

和 URL 發現、蜘蛛池的關系

蜘蛛池、外鏈引導、Sitemap 提交等做的是“让蜘蛛知道 URL 存在”,而 robots.txt 决定“蜘蛛能不能抓”。如果 robots.txt 把目标目錄挡住,前面做的 URL 發現工作就會卡在门口:蜘蛛可能知道地址,但不會抓取内容,新頁面自然难以進入後續流程。

因此,在做 URL 發現和抓取引導之前,先確認 robots.txt 没有誤封,是更省力的顺序。否則你可能會把問题誤判為“蜘蛛不来”,實际是“来了但被挡”。

把 robots.txt 当成一份需要定期审查的配置文件,而不是一次性寫完就忘的装饰文件。

總结

robots.txt 的自查不需要高深技術,但需要耐心和固定流程。重点检查全站禁止、路径大小寫、通配符誤伤、静態资源被挡、Sitemap 声明和多份文件冲突。每次改動後,用官方工具模拟關键 URL,再结合日誌观察抓取變化。這样可以在問题扩大前發現並修正,让蜘蛛的来訪真正落到有價值的頁面上。