经常看到這样的操作:先在 robots.txt 里把一批地址 Disallow 掉,再在頁面里加一句 noindex,觉得是上了双保險。實际结果是两個指令互相抵消——頁面被禁止抓取,蜘蛛也就讀不到那句 noindex,想清掉的内容一直留在索引里;反過来,有些该正常放行的頁面被顺带挡住,長期抓不到更新。
先分清两套指令管什么
两套指令常常被混着用,但职责完全不同:
- robots.txt 管的是抓取范围。它告诉蜘蛛哪些路径可以来、哪些不用来。它是一份约定文件,本身並不直接控制索引结果。
- meta robots 與 X-Robots-Tag 管的是索引與展示。noindex、nofollow、noarchive 這類指令寫在頁面里或响應头上,蜘蛛必须先抓到頁面、讀到指令,才會执行。
记住這條顺序就能避開大部分错誤:抓取在前,索引在後。抓不到的頁面,索引指令也就無從生效。
常见的几组冲突
想刪除,却先屏蔽
把已下线或含内部信息的頁面直接 Disallow,是常见的誤操作。更稳妥的做法是先允许抓取、加上 noindex,等頁面從索引里消失之後,再考虑是否屏蔽。顺序反了,頁面會長期卡在索引里。
连带屏蔽了 CSS 和 JS
有些站点為了省抓取量,把 /css/、/js/、/assets/ 整目錄屏蔽。但蜘蛛需要這些资源才能渲染頁面,屏蔽之後拿到的可能是一份不完整的 HTML,正文、内鏈、结构化資料都可能判讀错誤。
目錄規則誤伤整站
Disallow 後面多加一個字符、少寫一個斜杠,效果可能完全不同。比如用通配符挡參數时,很可能顺手挡掉分頁或正常栏目頁。寫通配符和结尾符时,建议先在小范围測試,確認無誤再全量生效。
測試环境的指令带到线上
预發环境為了防止被索引,通常會整站加 X-Robots-Tag: noindex 或者全局 Disallow。上线时如果忘了清理,正式站点就會長時間不進索引。發布流程里最好把這一步寫成固定检查項。
寫指令之前,先確認目的
- 只是不想让它抓,比如後台、搜尋结果頁、重复參數頁:用 robots.txt。
- 不想让它出現在索引里:允许抓取,再加 noindex。
- 两样都不想要:先 noindex 等索引清空,再补 Disallow,分两步走。
- 想保留抓取但不传递權重:用 nofollow 属性,而不是 Disallow。
一份可照做的自查清單
- 打開 /robots.txt,逐條核對每條規則對應的目錄是否還在使用。
- 確認没有屏蔽 CSS、JS、图片等渲染必需资源。
- 搜尋全站模板,检查是否有残留的 noindex 或 X-Robots-Tag。
- 確認 robots.txt 與頁面 meta robots 没有對同一路径给出相反指令。
- 检查各子域名、測試域名是否也有獨立的 robots.txt。
- 用日誌確認蜘蛛對 robots.txt 的訪問频率,是否長期拿到舊版本。
改完之後怎么確認
修改 robots.txt 後,蜘蛛重新讀取需要時間,這期間可能仍按舊規則抓取,属于正常現象,不必反复改動文件。建议改完记錄日期,過一段時間再從服務器日誌里观察目标路径的抓取變化,以及索引狀態是否按预期更新。如果只是想让某個頁面登出索引,重点盯的是索引结果,而不是抓取次數。
robots.txt 不是萬能的“低調收尾”工具。需要索引的頁面让它抓,需要下线的頁面用 noindex 让它讀,把這两件事分清楚,比堆規則更有效。