在蜘蛛池的日常维護里,robots.txt 和 meta robots 属于平时没人看、出事很难查的一類配置。入口頁能不能被抓,往往不是内容或連結的問题,而是某一條屏蔽規則寫错了。把它單獨拿出来理一遍,能省下不少排查時間。
两套規則的分工
robots.txt 是放在根目錄下的文本文件,作用范围是整個站点,蜘蛛在抓取前會先讀取它;meta robots 寫在頁面的 head 里,作用范围是目前頁面,蜘蛛抓到頁面之後才能看到。两者不冲突时各自生效,冲突时一般以更嚴格的一條為准。
入口頁常见的几種誤配
1. 整站 Disallow 忘了删
測試环境留下的 Disallow: / 直接上线,是最常见的一種。表現是日誌里入口頁訪問量骤降甚至归零,而服務器本身没有任何異常。
2. 路径前缀寫得太宽
比如想屏蔽 /tmp/,寫成 Disallow: /t,會连带挡掉所有以 t 開头的目錄。規則里少一個斜杠、少一個分隔符,影响范围就可能扩大到好几個栏目。
3. Allow 與 Disallow 顺序反了
同一份文件里同时存在 Allow 和 Disallow 时,部分蜘蛛按最長匹配决定,部分按先出現的規則决定。想精确放行某個子目錄,最好把 Allow 寫得更具体,並在日誌里確認實际结果。
4. noindex 與 nofollow 混用
noindex 是不让頁面進索引,nofollow 是不跟踪頁面上的連結。入口頁如果加了 nofollow,頁面里的内鏈等于白發:蜘蛛仍然抓到了頁面,但走不到目标頁。這两個词只差几個字母,效果完全不同。
5. 三處規則打架
robots.txt、meta robots 和 HTTP 响應头里的 X-Robots-Tag 可以同时存在。三者不一致时,蜘蛛通常按更嚴格的那條执行。排查时要把三處都拉出来對比,只看其中一處很容易得出错誤结论。
排查顺序建议
- 用蜘蛛 UA 抓一次 robots.txt,確認返回的是 200,而不是 404 或 403。
- 检查是否存在 Disallow: / 或针對目标路径的屏蔽規則。
- 抓一個入口頁源碼,检查 meta robots 的具体内容。
- 看响應头里有没有 X-Robots-Tag 字段。
- 對照訪問日誌,確認蜘蛛最後一次成功抓取的時間点。
几條實用建议
- robots.txt 保持简單,只寫必要的屏蔽規則,不要当成權限管理工具。
- 入口頁預設不加 noindex,除非這一批明确要下线。
- 規則變更後记錄時間和内容,方便和日誌波動對上。
- 入口頁數量多时,抽几個不同目錄做人工驗證,不必每個都查。
robots 相關的問题往往不是蜘蛛不来了,而是蜘蛛来了但被規則挡住了。先把這两件事分開,排查方向就不會跑偏。
最後提醒一点:放開屏蔽只是恢复抓取的前提,並不代表頁面會被收錄。抓取、去重、质量判断是後面几道關,robots 只解决第一道。