robots.txt 是站点對外發布的第一份抓取說明,位置固定、语法简單,所以经常被顺手改動。它的影响面却不小:一條寫错的 Disallow,可能让蜘蛛在很長一段時間里不再進入站内。下面這份自查清單,适合在每次上线、改版、迁移前後過一遍。
先確認文件本身能被正常讀取
在谈規則之前,先確認文件没坏:
- 地址必须是根目錄下的 /robots.txt,放在子目錄里無效;
- HTTP 狀態碼返回 200,内容類型為 text/plain;
- 如果返回 404,蜘蛛會当作没有任何規則,全站預設可抓;如果是 5xx,多數蜘蛛會暂时放缓或停止抓取,等你恢复;
- 儲存时去掉 BOM,避免出現中文标点或全角冒号,這類字符會让整條規則失效。
最常见的坑:一條規則屏蔽全站
測試环境遗留的 Disallow: / 被带到线上,是發生频率最高的事故。它不需要错別字,也不需要语法错誤,一行就能生效。
上线前先打開 /robots.txt,把每一行 Disallow 念一遍,確認它屏蔽的路径确實是你要屏蔽的,而不是複製粘贴留下的歷史配置。
搞清通配符和匹配優先級
規則冲突时,按匹配長度决定,而不是按书寫顺序:
- * 代表任意字符,$ 代表地址结尾;
- Allow 和 Disallow 同时命中时,匹配字符串更長的那條生效;
- 長度相同时,Allow 優先。
例如 Disallow: /search/ 與 Allow: /search/help 同时存在时,/search/help 會被放行,因為它更長。想屏蔽带參數的地址,可以用带 * 的寫法覆盖一批路径,但要先在小范围驗證,避免顺手誤伤正常栏目。
別把 CSS、JS、图片一起挡住
不少模板會把 /static/、/assets/、/uploads/ 直接寫進 Disallow,理由是這些不算内容頁。但蜘蛛需要讀取這些资源才能還原頁面样貌,资源被挡之後,它看到的可能是一個残缺頁面,對内容判断並不友好。屏蔽资源目錄前,先確認站点有没有替代方案,或者只屏蔽其中体积明顯異常的部分。
Sitemap 声明與多组 UA 規則
- Sitemap 使用完整绝對地址,寫一行即可,不必在每個規則组里重复;
- 针對不同 UA 寫多组規則时,同一個 UA 只會讀取第一组匹配到的規則;
- 除非清楚後果,不建议對主流搜尋引擎做差异化屏蔽。
上线前怎么驗證
- 用站長平台自带的 robots 檢測工具,輸入几條真實 URL,看结果是允许還是屏蔽;
- 用命令行請求一次文件,確認响應头和正文都没有異常;
- 從被屏蔽的目錄里抽一個地址,確認它确實不该被抓;
- 改動後观察一到两周的抓取日誌和索引量,不要指望立刻看到结果。
最後提醒一句:robots.txt 管的是能不能来,不管要不要收錄。真正不希望出現在结果里的頁面,還是應该用 noindex 處理,因為被屏蔽的頁面,蜘蛛也讀不到你寫在頁面里的 noindex。