站点里總有一些頁面不希望出現在搜尋结果里:後台登入地址、站内搜尋结果頁、带參數的篩選頁、測試頁面、重复的打印版本。最常被提到的两個手段是 robots.txt 和 noindex,但它們管的事情並不一样,顺序用错,頁面可能既屏蔽不掉,也移除不了。
两者管的不是同一件事
robots.txt 管的是抓取,相当于在门口放一块路牌,告诉蜘蛛哪些路径不必進来;noindex 管的是索引,是頁面自己声明“不要把我放進搜尋结果”。一個是入口层面的限制,一個是頁面层面的表態,作用位置完全不同。
robots.txt 能省抓取,但不會移除已有收錄
如果某個地址已经被抓取並收錄,再把它寫進 robots.txt 的 Disallow,蜘蛛通常不會再去讀取這個頁面,也就看不到你後来补上的任何新指令。已经建立的索引记錄可能長期保留,只是内容快照會逐渐變舊。
所以 robots.txt 更适合挡住那些你根本不想浪費抓取预算的地址,比如無限翻頁、會话 ID、後台路径,而不是用来做“下线”操作。
noindex 生效的三個前提
- 頁面要能被抓取。如果同一路径已被 robots.txt 挡住,蜘蛛讀不到 noindex 标簽,标簽等于没寫。
- 頁面要返回可索引的狀態碼。通常是 200 才谈得上“抓取後判断是否索引”;301、302 會把判断交给跳轉目标。
- 标簽要出現在能被讀到的地方。HTML 的 meta robots 需要放在 head 里,或者改用 X-Robots-Tag 响應头,後者對 PDF 等非 HTML 文件也适用。
只想靠 noindex 做下线,速度往往偏慢
noindex 是“下次抓取时生效”的机制,抓取节奏不由站点决定。頁面越深、被連結得越少,生效越慢。着急的场景更合适的做法是:先让頁面返回 404 或 410,或者用 301 指到替代頁面,再配合 Search Console 的移除工具做临时處理。临时移除有期限,到期後需要重新提交,因此它只是缓冲,不是長期方案。
一條常见的错誤鏈路:robots.txt 挡住路径 + 頁面加 noindex + 什么都不做,過了几個月頁面還在索引里。原因不是指令無效,而是蜘蛛根本没机會讀到它。
几類典型頁面怎么處理
- 站内搜尋结果頁:通常不希望被大量收錄,可以先用 robots.txt 挡掉參數路径,同时頁面加 noindex 做双保險。
- 分頁第 2 頁之後:如果决定不收錄,用 noindex 让蜘蛛能讀到;直接 Disallow 會让蜘蛛無法顺着翻頁繼續發現更深的内容。
- 打印頁、纯文本版本:優先用 canonical 指回主版本;如果确實不想要這個地址,再补 noindex。
- 已下线的舊活動頁:不要只加 noindex,直接返回 410 更干脆。
- 需要登入的頁面:靠權限控制而不是靠元标簽,蜘蛛看不到内容时也可能保留 URL 记錄。
noindex 和 canonical 別混着寫
两個信号方向不同:canonical 的意思是“請把權重算给另一個地址,但這個頁面本身可以存在”;noindex 的意思是“別收錄這個頁面”。同时出現时,搜尋引擎可能只采纳其中一個,最终结果难以预测。想让頁面存在但不被收錄,用 noindex;想让两個地址合並成一個,用 canonical。
一個可执行的自查顺序
- 先確認這個地址目前是否已经被收錄。
- 如果是長期屏蔽、且想节省抓取预算,考虑用 robots.txt。
- 如果要移除已有记錄,先保證頁面能被正常抓取。
- 在頁面級加 noindex,確認返回 200、标簽位置正确。
- 着急的场景用移除工具做临时處理,同时准备長期方案。
- 观察日誌與收錄狀態,避免叠加互相冲突的指令。
屏蔽這件事没有萬能開關。先想清楚你要的到底是“別来抓”還是“別收錄”,是“以後別再收”還是“現在就要下线”,再選工具,通常比一次堆上好几條指令更有效。