robots.txt 是站点上最轻量的一份文件,却常常是抓取問题里最难第一時間想到的一环。它不參與頁面渲染,也不影响用戶訪問,所以一旦規則寫错,站長往往是在抓取量下滑、内頁迟迟不更新时才回头排查。
誤屏蔽為什么容易被忽略
搜尋引擎蜘蛛在發起請求前會先讀取 robots.txt,被 Disallow 命中的 URL 通常不會進入抓取队列。問题在于,這類屏蔽表現為“没有任何响應”,日誌里既没有 4xx 也没有 5xx,看起来像是蜘蛛單纯没有来訪。如果同一目錄下的内鏈仍然存在,用戶点击正常,頁面也正常渲染,就更难察觉。
- 被屏蔽的目錄里仍有大量内鏈入口,抓取预算被消耗在無效路径上;
- CSS、JS 被屏蔽後,蜘蛛拿到的頁面结构與用戶所见不一致;
- 被屏蔽的 URL 依然可能出現在 Sitemap 中,形成互相矛盾的信号。
几類常见誤伤
1. 整目錄屏蔽但内鏈未同步清理
改版或下线栏目时习惯用 Disallow: /old/ 一刀切,導航和舊文章正文里的連結却没删。结果是蜘蛛不断發現這些 URL,又不断被拒绝,等于反复在门口打轉。
2. 静態资源與接口路径被顺手屏蔽
有些模板為了“省抓取量”,會把 /assets/、/api/、/search/ 一並屏蔽。若頁面依赖這些资源完成渲染,蜘蛛看到的可能只是空壳。建议只屏蔽明确的隐私路径或無限參數路径,渲染必需资源保持可抓取。
3. Disallow 與 noindex 混用
Disallow 阻止抓取,noindex 阻止索引,两者作用阶段不同。若 URL 已被 Disallow,蜘蛛讀不到頁面上的 noindex,舊快照可能長期存在。需要移除索引时,應先放開抓取,等 noindex 生效後再考虑屏蔽。
4. 通配符與規則優先級寫错
$ 與 * 的组合、Allow 與 Disallow 的匹配長度優先級,都容易在複製粘贴中出错。例如 Disallow: /*? 可能把带參數的正常列表頁一並拦掉。
按這個顺序排查
- 直接訪問 /robots.txt,確認返回 200 且内容完整,没有被 WAF 或 CDN 改寫;
- 逐條核對 Disallow 路径,與站点實际目錄、Sitemap 條目做交叉比對;
- 抽取被屏蔽目錄下的 5~10 個代表性 URL,检查站内是否仍有内鏈指向;
- 用抓取工具的“以蜘蛛身份訪問”或日誌中的蜘蛛 UA 驗證實际可訪問性;
- 確認規則無誤後,再检查 Sitemap 是否仍包含被屏蔽 URL,保持两者一致。
恢复之後要盯一段時間
放開屏蔽只是第一步,蜘蛛重新發現這些 URL 需要時間,尤其是原本就缺乏内鏈的深层頁面。建议在恢复後:
- 從首頁或栏目頁补一到两條指向重点頁面的内鏈,帮助頁面重新進入抓取路径;
- 观察日誌中该目錄的抓取频次變化,判断是規則問题還是内容本身的問题;
- 如果頁面已無價值,直接做 301 或 410,不要長期挂着 Disallow 占位。
把 robots.txt 当作临时止痛药来用,短期看似干净,長期往往留下更多需要清理的入口。每條規則最好都能對應一個明确理由。
robots.txt 的维護成本很低,但寫错的代價不低。定期把它和站点结构、内鏈、Sitemap 放在一起看一遍,能避免很多“蜘蛛不来”的誤判。