robots.txt 是搜尋引擎進入站点的第一道门。它不决定頁面能不能被收錄,但决定蜘蛛能不能把頁面抓回去——抓不到,後面所有關于内容质量和索引的判断都無從谈起。很多“突然不收錄了”的情况,最後都追到這一行配置文件上。
先分清 robots.txt 管的是什么
robots.txt 约束的是抓取,不是索引。被 Disallow 的 URL,蜘蛛不會去讀,也就看不到頁面上的 noindex、canonical 和正文。反過来说,如果某個頁面已经被收錄,再用 Disallow 把它挡住,搜尋结果里那條记錄可能長期存在,只是摘要和内容不再更新。
需要頁面登出索引时,用 meta robots 或 X-Robots-Tag 的 noindex,而不是 robots.txt。工具用错,問题會拖得更久。
最常见的几類誤封
- 整站屏蔽:從測試环境複製過来的 Disallow: /,上线时忘了删,站点在搜尋结果里逐步消失。
- 屏蔽资源目錄:把 /assets/、/static/、/js/ 一起挡住,蜘蛛拿不到 CSS 和 JS,渲染判断和頁面质量评估都會受影响。
- 通配符誤伤:用带問号的通配規則想挡參數,结果连带把正常的詳情頁一起挡了;结尾的 $ 位置寫错,匹配范围會超出预期。
- 規則優先級理解错:同一條路径上有多條規則时,按最長匹配生效,長度相同时 Allow 優先。規則在文件里的先後顺序本身不影响结果。
- 返回内容不是纯文本:有些站点把 robots.txt 的請求重寫到首頁,返回了 HTML。這種情况下搜尋引擎的處理方式和你预期不同,規則實际並未生效。
返回狀態碼也要一起看
- 200 且内容是合法規則:按規則执行。
- 404:视為没有限制,全站可抓。規則文件被誤删时會走到這里。
- 403:接近全站禁止抓取,影响和 Disallow: / 相近。
- 5xx:蜘蛛通常會暫停一段時間再重试,短期抓取量會下降。
所以排查时不要只看文件内容,狀態碼、Content-Type、實际返回的字节都要確認一遍。
一個可执行的自查顺序
- 在搜尋引擎後台的 robots.txt 报告里,確認线上生效的是哪一版,而不是你本地那份。
- 直接訪問 /robots.txt,看返回碼和内容是否被 CDN、WAF 或重寫規則改過。
- 用官方的 robots.txt 測試工具,逐條測試首頁、栏目頁、詳情頁、资源文件和 sitemap 里的代表性 URL。
- 核對被屏蔽的路径下,是否包含 sitemap 提交的 URL,或站内大量内鏈指向的 URL。這類連結被挡,等于白白浪費抓取机會。
- 核對需要 noindex 的頁面有没有同时被 Disallow,導致 noindex 永遠讀不到。
- 改完後看日誌:目标目錄的抓取請求是否恢复,返回碼是否正常。
修复之後別急着下结论
解除屏蔽只是把门打開。抓取恢复、重新抓取、内容重新评估都要時間,不同站点的节奏差別很大。這段時間里更值得做的是检查内鏈是否指向有效 URL、sitemap 是否只放需要收錄的地址,而不是反复来回改規則。
最後提醒一句:robots.txt 是公開的,也不具备訪問控制能力。真正不该被看到的内容,應该用權限控制、noindex 或干脆不發布来處理。