站点运营

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

robots.txt 常被当成一次配置就長期不管的文件,但一條過期規則就可能挡住整站或關键目錄。本文梳理狀態碼检查、常见寫法誤区、通配符使用、與 URL 發現的關系,並给出一份可直接照做的自查清單和改後驗證方法。

站点运营

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

robots.txt 是搜尋蜘蛛進入站点前最先讀取的文件之一。它不控制頁面能否被收錄,但會直接影响蜘蛛愿不愿意繼續往下爬。很多站点的問题不是出在内容质量,而是這個文件里留下一行過期的 Disallow,把整站或某個目錄挡在门外,而运营者半年都没發現。

先確認它真的被讀取了

在服務器訪問日誌里過滤 robots.txt 的請求记錄,看两件事:一是频率,主流搜尋引擎的蜘蛛會定期回来取;二是狀態碼,必须是 200,且返回的是纯文本内容。

  • 返回 404:蜘蛛會按“無限制”處理,但也說明文件實际丢失,規則没有生效。
  • 返回 403 或 5xx:不同蜘蛛的處理策略不一致,有的會暫停抓取,風險最大。
  • 返回 HTML 错誤頁:文件内容被跳到首頁或错誤模板,規則等于不存在。

最常见的几種寫法問题

Disallow 開得太宽

比如只想屏蔽後台,却寫成更宽的路径匹配,或者干脆寫 Disallow: /,把整站鎖死。測試环境上线时留下的規則,是最容易被带到生产环境的。

忘记给必要目錄開 Allow

規則匹配通常按最長路径優先。如果先把整個目錄屏蔽,再想放開其中几個子目錄,必须顯式寫 Allow,否則放開不生效,實际操作时會以為改了却没起效果。

通配符和结尾符号用错

* 表示任意字符,$ 表示結束。用 /search$ 只匹配到 search 结尾的地址,用 /search 則會连 /search-result 一起挡住。寫成带參數形式的規則时,要確認没有誤伤正常栏目。

多份規則互相冲突

不同人接手时各加一段,最後出現同一條路径既被屏蔽又被放開。規則越短越清晰,比层层叠加好维護,接手的人也能一眼看懂意图。

它和 URL 發現的關系

對被屏蔽的目錄,蜘蛛不會抓取,也不會從里面發現新的連結。這會连带影响依赖這些頁面輸出的内鏈结构:一個新栏目如果挂在被屏蔽的路径下,它的文章可能長期不被發現。所以調整 robots.txt 前,先想清楚哪些路径承担着連結分發的角色,必要时把它們單獨标注出来。

一份可以照做的自查清單

  1. 用浏览器直接訪問 /robots.txt,確認内容與预期一致,狀態碼 200。
  2. 逐條規則核對:屏蔽的是路径還是具体文件,是否有更窄的寫法。
  3. 检查是否誤屏蔽 CSS、JS、图片目錄,這些资源被挡會影响頁面渲染判断。
  4. 確認 sitemap 地址寫在文件里,且该地址可以直接訪問。
  5. 检查測試、备份、临时目錄是否已经屏蔽。
  6. 把改動记進變更记錄,注明日期、修改人和原因。

改完之後做什么

修改後不要只看搜尋引擎後台的提示就收工。可以抽查几條被放開的 URL,過几天再看日誌里是否出現抓取记錄。如果長時間没有任何抓取,再排查是否還有別的入口限制,比如服務器防火墙、CDN 規則或者站点自身的訪問控制。

robots.txt 是一張门禁名單,不是内容质量评判工具。把它寫清楚、改完记得回看,比反复調整規則更重要。