站点运营

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

robots.txt 寫错一個斜杠,就可能让整站或某個栏目長期無人抓取。本文從規則匹配、通配符寫法、路径大小寫,到 meta robots 與 X-Robots-Tag 的配合,给出一份可执行的自查清單,帮你在改版、搬迁或新增栏目後確認抓取范围没有被誤伤。

站点运营

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

robots.txt 通常只有几十行,却是站点與搜尋引擎之間最容易被忽视的一份约定。它不控制收錄,只影响抓取:寫對了,蜘蛛知道哪些目錄不必反复来;寫错了,可能整站或某個栏目長期没有蜘蛛訪問,而你在後台看不到明顯报错。

下面這份自查清單,适合在改版、加栏目、換服務器或調整測試环境之後過一遍。重点不是把規則寫得多复杂,而是確認它和目前站点结构一致。

先想清楚 robots.txt 能做什么、不能做什么

它放在站点根目錄,只能按路径做粗粒度的允许與禁止,不能针對頁面内容判断,也不能替代權限系統。

  • 能做的:告诉蜘蛛哪些路径不必抓取,並指明 sitemap 的位置。
  • 不能做的:阻止頁面出現在搜尋结果里、保護隐私、隐藏敏感目錄。

真正需要保密的頁面,應该靠登入驗證或訪問權限,而不是一條 Disallow。

規則匹配里最容易寫错的几處

一、路径前面忘了斜杠

Disallow: /admin 與 Disallow: admin 的含义並不相同,後者属于相對寫法,行為不够稳定。建议所有路径统一用斜杠開头。

二、一條 Disallow: / 把整站關掉

從測試环境複製規則上线、忘了删掉這條,是最常见的“整站無抓取”原因。上线前用抓取測試工具看一眼根目錄是否被挡。

三、通配符把不该挡的路径一起挡了

Disallow: /*?* 這類寫法會屏蔽所有带參數的地址,但也可能把正常分頁、篩選、搜尋结果頁一並挡掉。如果這些頁面里有需要被抓取的内容,就要換成更精确的規則,而不是图省事一刀切。

四、目錄名大小寫不一致

robots.txt 的路径匹配区分大小寫。服務器上目錄是 /News/,規則里寫 /news/,基本等于没寫。

五、Allow 與 Disallow 的優先級

主流搜尋引擎按“最具体的規則優先”来處理,而不是简單按书寫顺序。但不同實現仍有差异,規則越少、越明确,越不容易出現理解分歧。

一份可以照着走的自查步骤

  1. 確認 robots.txt 能正常訪問並返回 200,不是 404 或 5xx;如果返回 5xx,蜘蛛可能暂时按整站禁止處理。
  2. 检查是否存在 Disallow: / 或大范围目錄屏蔽,尤其是從測試环境带過来的規則。
  3. 逐條比對規則與實际目錄结构,删掉已经不存在的路径。
  4. 確認 sitemap 寫的是完整 URL,且可以正常打開。
  5. 用抓取測試工具分別測試首頁、栏目頁、内容頁,確認没有被誤挡。
  6. 修改後观察一段時間日誌,看各栏目是否仍有蜘蛛来訪。

別忘了 meta robots 與 X-Robots-Tag

robots.txt 管的是抓取,頁面里的 meta robots 管的是索引與跟随。常见問题是两處規則互相矛盾:robots.txt 允许抓取,但模板里带着 noindex,蜘蛛来了也白来。

模板中的 noindex 可能来自測試配置残留、分頁模板未清理,或者複製栏目时忘了改。自查时建议抽查几類模板:列表頁、詳情頁、搜尋结果頁、标簽聚合頁。

如果是 PDF、图片等非 HTML 资源,頁面里没法寫 meta,需要靠 HTTP 响應头里的 X-Robots-Tag 控制,這一点经常被漏掉。

提示:改 robots.txt 不需要重啟服務器,但影响是長期的。建议每次修改都留一條备注,寫清谁改的、為什么改、影响哪些路径,出問题时能快速回滚。

小结

robots.txt 的問题往往不是寫得太少,而是寫得太随意。把它当成一份需要随站点结构同步更新的配置,而不是寫完就再也不看的文件,就能避開大部分誤挡抓取的情况。