robots.txt 是站点與搜尋蜘蛛之間的第一道约定。它本身不复杂,但正因為它简單,很多站点上线之後就很少再回头看。等到發現收錄異常、栏目迟迟不被抓取时,往往已经過去几周。把 robots.txt 当成需要定期复核的配置文件,比出問题後再排查要省事得多。
為什么 robots.txt 值得單獨自查
抓取预算有限,蜘蛛進入一個站点後的第一步通常就是讀取 robots.txt。如果這里寫错了,後面的 sitemap、内鏈布局、内容更新节奏都很难發挥作用。常见的错誤並不隐蔽,只是平时没人對着线上文件逐行讀一遍:
- Disallow 寫成整站屏蔽:一行 Disallow: / 可能来自測試环境的複製粘贴,上线时忘了删。
- 分组寫错:User-agent 行與規則之間被空行或注释打断,導致規則归属到別的分组。
- 路径匹配理解偏差:前缀匹配、结尾通配符和中間通配符的寫法不同,屏蔽范围差別很大。
- 大小寫與编碼問题:URL 路径大小寫敏感,規則里寫错一個字母就可能漏掉或誤伤。
自查时重点看哪几項
1. 整体是否存在整站屏蔽
先確認没有任何一條規則把根路径全部挡住。測試环境的預設配置、框架自带的模板,都可能悄悄带進這一條。抓取測試工具能给出结果,但更可靠的做法是自己讀取线上返回的内容,而不是看本地文件。
2. 關键目錄是否被誤伤
列表頁、标簽頁、站内搜尋頁通常需要限制,但文章目錄、栏目目錄、静態资源目錄不该被一起挡掉。检查每一條 Disallow 是否精确指向想限制的路径,而不是它的上級目錄。一個常见的失誤是限制 /tag/ 路径,却忘了站内搜尋入口也用同一個前缀。
3. 是否與頁面級指令冲突
robots.txt 只管抓取,不管索引;頁面里的 noindex 才管索引。如果某類頁面在 robots.txt 里被禁止抓取,同时又靠 meta robots 要求不索引,蜘蛛看不到 noindex,頁面仍可能以 URL 形式出現在结果里。两者應当配合,而不是互相抵消。
4. sitemap 地址是否可用
robots.txt 里的 Sitemap 行是發現入口之一,寫错路径等于少了一條通道。確認地址可訪問、返回内容正常,並且指向目前主域,不要混用不同协议或带 www 與不带 www 的版本。
一轮完整的核查流程
- 訪問线上 robots.txt,確認返回狀態正常且内容是纯文本。
- 逐行核對 User-agent 與規則分组,删掉過期條目。
- 用抓取測試工具模拟蜘蛛訪問首頁、栏目頁和一篇内容頁。
- 检查關键頁面是否被允许抓取,被限制的頁面是否符合预期。
- 確認 Sitemap 地址有效,並與實际提交的地址一致。
- 改動後观察服務器日誌,看蜘蛛對原先被挡路径的請求是否恢复。
改完之後的观察
robots.txt 的生效不是即时的。蜘蛛會缓存這份文件一段時間,尤其是原先屏蔽較久、抓取频次已经降低的站点。改動後不必立刻下结论,给一到两周观察期,结合日誌里蜘蛛對關键路径的訪問次數和狀態碼分布来判断。
如果只是放宽限制,通常較快能看到請求增加;如果是新增加限制,已经抓取過的頁面不會自動消失。這时候需要配合頁面級指令或内容調整,而不是指望一份文件解决全部問题。
把 robots.txt 当配置文件管理:改動留记錄,上线前复核一遍,別让它成為没人负责的角落文件。