robots.txt 是站点里最容易被忽略的文件之一。它通常安静地躺在根目錄,几個月没人打開,改一次也许只要几分钟,但寫错一行,影响范围常常覆盖全站。正因為不常被看到,它更需要被定期拿出来對照检查。
先弄清它管什么,不管什么
机器人协议不是强制标准,主流搜尋引擎會遵守,但並非所有抓取者都會照办。更關键的一点是:Disallow 只表示“不要抓取”,不等于“不要收錄”。如果某個頁面需要保留在站内,却希望它不出現在搜尋结果里,應该用 noindex,並保證该頁面允许被抓取,否則标簽根本讀不到。用 Disallow 去處理這類需求,往往适得其反。
逐項检查常见寫法
User-agent 分组是否寫對
- 每组以 User-agent 開头,後面跟本组专属規則,组與组之間的規則不會互相繼承。
- 组名大小寫不敏感,但拼寫必须准确,寫错的组等于没有生效。
- 某一组只寫了 Allow 却漏寫 Disallow 时,要意识到預設狀態是允许抓取。
Allow 與 Disallow 的優先級
同一條路径同时命中 Allow 和 Disallow 时,一般以更具体、也就是更長的規則為准;長度相同时,宽松的 Allow 通常優先。這條判断经常被凭印象誤判,改完之後務必用工具實际驗證一遍。
通配符與結束符
- * 匹配任意字符,$ 表示路径结尾,例如 /*.pdf$ 和 /*.pdf 覆盖的范围並不相同。
- 把 Disallow: / 寫進某一组,等于對该组關閉整站,上线前要確認這行不是誤留。
- 路径区分大小寫,/Search/ 和 /search/ 可能是两個不同地址。
一套可执行的自检流程
- 用浏览器直接打開 /robots.txt,確認返回 200、内容是纯文本,而不是把 404 頁面或首頁 HTML 当内容返回。
- 逐行讀一遍,重点看有没有整站拦截、有没有誤伤资源目錄(如 /assets/、/uploads/),有没有漏掉本该放行的路径。
- 確認 Sitemap 声明寫的是完整地址,且與實际提交的地址一致。
- 使用搜尋引擎官方提供的 robots.txt 測試工具,輸入几個有代表性的 URL,看實际判定结果是允许還是拦截。
- 到服務器日誌里抽查几個被拦目錄,確認近期没有来自正常蜘蛛的大量被拒记錄。
几個容易踩的坑
- 用 robots.txt 屏蔽後台、測試頁或參數頁,却忘了這些地址仍可能被外部引用,最後以無描述的形式出現在结果里。
- 站点搬到了子目錄,文件里的路径却還是舊结构。
- Crawl-delay 只被部分搜尋引擎支持,寫很大的值會拖慢發現速度,一般不建议随意調整。
- 改完規則不做測試,等發現收錄量下滑才回头排查。
把 robots.txt 当成一份“通行名單”来维護:明确哪些必须放行,哪些确實需要拦截,剩下的交给内容质量去决定。
结语
不需要频繁改動它,但建议每季度、以及每次站点结构調整之後检查一次,並留下一份歷史版本。規則越少越清晰,出問题时也越容易定位。