站点运营

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

robots.txt 是蜘蛛進站前讀的第一份說明文件。寫错一條規則,可能让整站被挡在门外;寫得含糊,又會让该抓的頁面被顺带屏蔽。這篇整理了一份自查思路:從文件位置、语法匹配,到與 meta robots、X-Robots-Tag 的分工,逐項確認。

站点运营

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

robots.txt 放在域名根目錄,是蜘蛛進站前最先讀的一份說明。它不承诺收錄,也不负责排名,唯一的作用是告诉蜘蛛哪些路径不必来。規則本身很简單,但正因為简單,寫错了往往不容易被發現——直到某天翻看日誌,才發現整站的抓取记錄少得可怜。

先確認文件本身能不能被讀到

  • 位置固定在域名根目錄,不能放進子目錄,也不能改名。子目錄下的同名文件不會生效。
  • 正常返回狀態碼應為 200,内容類型是纯文本。返回 404 时,多數蜘蛛會按「無限制」處理;返回 5xx 或超时,不同蜘蛛的處理方式並不统一,可能暫停一段時間,也可能繼續抓,不要拿 5xx 当屏蔽手段用。
  • 站点若使用 CDN 或 WAF,確認這個路径没有被拦下。用命令行或抓取測試工具從公網確認,比只看後台配置可靠。
  • 文件里用注释說明时,注释符号後的内容蜘蛛會跳過,不會造成影响。

几條常用指令的匹配逻辑

Disallow 是前缀匹配

寫 Disallow: /admin 會同时屏蔽 /admin、/admin/、/administer 這類同前缀路径。想精确到目錄,结尾补斜杠:Disallow: /admin/。想屏蔽單個文件,寫完整路径更稳妥。

想屏蔽整站是 Disallow: /,這條也最危險,被誤留在正式站上等于關掉整站入口。上线前建议單獨搜一遍這條規則。

Allow 用来在屏蔽区里開口子

当 Allow 與 Disallow 同时命中一條路径时,按最長的那條規則優先;長度相同时,Allow 優先于 Disallow。所以允许規則寫得比屏蔽規則更具体,才有意义。比如先屏蔽整個目錄,再單獨放行其中一個子路径。

Sitemap 声明

Sitemap: 後面接完整網址,可以寫多條。這里只是声明位置,属于提示性质,不影响抓取權限,也不等于提交。

通配符與结尾符

部分蜘蛛支持 * 與 $,但各家實現並不完全一致。日常能用具体路径表達清楚的,就別依赖通配符,减少理解偏差。

几個高频寫错的地方

  1. 把不想被索引的頁面直接寫成 Disallow。屏蔽抓取後蜘蛛讀不到頁面上的 noindex 指令,頁面仍可能以纯連結形式出現在结果里。想让頁面不出現,應当允许抓取,再用 noindex 處理。
  2. 規則里直接寫了完整網址,正确寫法是路径部分。
  3. 大小寫與實际路径不一致,導致该屏蔽的没屏蔽上。
  4. 放了好几份 robots.txt,實际只有根目錄那一份生效。
  5. 測試环境或新域名切換时,把屏蔽規則一並带到了正式站。

與 meta robots、X-Robots-Tag 的分工

robots.txt 管的是「能不能抓」;meta robots 标簽和 HTTP 响應头里的 X-Robots-Tag 管的是「抓到之後能不能索引」。两者作用在不同环节,不能互相替代。頁面級別的精细控制,更适合放在 meta 标簽或响應头里。

上线前的自查清單

  1. 根目錄路径可訪問,返回 200,内容為纯文本。
  2. 没有 Disallow: / 這類整站屏蔽残留。
  3. 需要抓取的目錄、CSS 與 JS 资源没有被誤屏蔽。样式和脚本被挡,會影响蜘蛛對頁面的渲染判断。
  4. 屏蔽規則统一用路径寫法,按目錄需要补结尾斜杠。
  5. Allow 規則足够具体,長度長于對應的 Disallow。
  6. Sitemap 地址正确且可訪問。
  7. 與頁面上的 meta robots、响應头指令的意图不冲突。
  8. 改完後在服務器日誌或抓取測試工具里確認结果,而不是只凭肉眼检查。
robots.txt 只做一件事:划出蜘蛛不必進入的范围。這份文件越短、越具体越省事;凡是能用頁面級指令解决的問题,尽量別寫進這里。

站点运营中這類基础項不多,但每一條都影响後續所有動作。robots.txt 通常半年都不動,正因為如此,改版、換域名、上測試环境时它最容易被忽略,建议把它固定列進上线检查清單。