做站点运营经常會碰到一個需求:某個頁面不想让它出現在搜尋结果里。這时候面前通常摆着两個選項——在頁面里加 noindex,或者在 robots.txt 里屏蔽。两者看起来都是"挡住",但作用的位置完全不同,顺序用错了,反而會让頁面在索引里待得更久。
先把两件事拆開:抓取和索引
搜尋引擎處理一個 URL,大致分两步:先由爬虫把頁面抓下来,再决定要不要放進索引。robots.txt 管的是第一步,noindex 管的是第二步。
在 robots.txt 里寫 Disallow,等于告诉爬虫"這個地址不用来抓"。爬虫看不到頁面内容,自然也讀不到頁面里的 noindex 标簽。noindex 反過来,它必须寫在頁面里,或者通過 HTTP 响應头返回,爬虫得先把頁面抓下来才能看到。這就是為什么一個常见的坑是:既在 robots.txt 里屏蔽,又指望頁面里的 noindex 生效,结果两邊都没起作用。
robots.txt 常被誤用的地方
很多人以為在 robots.txt 里屏蔽一個 URL,它就等于從搜尋结果里消失了。實际並不一定。
- 如果這個 URL 之前已经被索引,屏蔽抓取並不會立刻把它清出索引,它可能繼續以没有摘要的形式出現在结果里。
- robots.txt 是公開文件,任何人可以查看。不要把不想公開的路径当成保密手段。
- 不同爬虫對 robots.txt 的遵守程度不一样,屏蔽的實际范围也可能有差异。
所以 robots.txt 更适合用来控制抓取预算、减少無意义的抓取压力,而不是用来做索引清理。
noindex 生效需要满足什么
noindex 要想起作用,前提是頁面能被抓取。也就是说:
- 该 URL 没有被 robots.txt 屏蔽;
- 服務器能正常返回頁面,不是持續的超时或 5xx;
- 标簽寫在正确的位置,能被解析到。
常见的寫法有两種:HTML 頁面上用 <meta name='robots' content='noindex'>,非 HTML 资源比如 PDF、图片、视频,用 HTTP 响應头 X-Robots-Tag。後者容易被忽略,一份 PDF 只在文件里塞 meta 标簽是没用的。
一個實用顺序:頁面還没被索引、想让它別進去,可以允许抓取並加 noindex;頁面已经被索引,同样先允许抓取並加上 noindex,等它從索引里消失之後,再考虑是否收紧抓取。
按场景選做法
具体用哪個,取决于頁面目前的狀態和你真正想達到的目的。
- 不想被搜到、也不想被索引:允许抓取,加 noindex。確認移出索引後,如果不希望繼續消耗抓取资源,再改成 robots.txt 屏蔽。
- 只是不想让它占抓取预算:用 robots.txt。比如篩選參數、排序參數生成的组合頁。
- 頁面數量大、层次明顯:先看清哪一层是真正需要收錄的,把不需要的层用 noindex 或屏蔽處理,不要所有层套同一套規則。
- 已被索引且内容敏感:除了 noindex,還可以用搜尋引擎提供的移除工具做临时處理,同时把頁面本身删掉或改成返回 404、410。
改完之後要看什么
調整不是改完就結束,還需要核對几件事:
- 用抓取測試工具確認頁面返回的是预期狀態碼,noindex 是否被识別;
- 观察一段時間内的索引數量變化,注意是缓慢下降還是完全没有變化;
- 检查 robots.txt 是否誤屏蔽了你還需要收錄的路径,尤其是測試环境的規則被带到线上;
- 如果走了刪除路线,確認頁面确實返回 404 或 410,而不是仍然返回 200。
简單归纳:robots.txt 决定抓不抓,noindex 决定收不收。想让一個頁面從索引里出去,通常要靠 noindex 加可抓取;只想减少抓取压力,才用 robots.txt 屏蔽。把這两件事分清,很多反复處理不掉的問题就能顺着原因找到出口。