想让某個頁面不被搜尋引擎收錄,常见做法有三種:robots.txt 屏蔽、加 noindex、让頁面返回 404 或 410。這三種方式在鏈路上的作用点不同,混用或用错位置,不但達不到目的,還可能让 URL 以另一種形式繼續留在索引里。
作用点不同:一個拦抓取,一個管索引,一個說明頁面没了
- robots.txt 的 Disallow:拦在抓取這一步。蜘蛛不會去取頁面内容,自然也就讀不到頁面里的任何指令。
- noindex:作用在索引這一步,前提是頁面被真實抓取到,meta 标簽或 HTTP 响應头里的指令才會被讀到。
- 404 / 410:告诉搜尋引擎這個地址已经不存在,已收錄的條目會随着後續抓取逐步清除。
三者不是同一层級的東西。很多人把它們当成「都是不让收錄」的等價選項,结果就是看起来屏蔽了,實际還在索引里。
robots.txt 屏蔽之後,URL 仍可能出現在索引里
被 Disallow 的地址,搜尋引擎不會抓取内容,但如果站外有連結指向它,這個地址本身仍可能以「只有 URL、没有标题和摘要」的形式出現在索引中。原因很简單:通過外鏈知道了地址存在,只是拿不到内容。
所以判断该用哪種方式,先問自己一個問题:我要的是「内容不被看到」,還是「這個地址彻底從索引消失」,還是「蜘蛛別来抓這些没用的路径」。如果只是不想让蜘蛛反复去爬動態參數、後台路径、篩選组合,robots.txt 是合适的;如果目标是让内容不出現在搜尋结果里,robots.txt 通常不够。
noindex 的關键:蜘蛛得先抓到頁面
noindex 寫在 meta robots 或 HTTP 响應头里,两者都需要頁面被抓取才能生效。如果一個目錄在 robots.txt 里被 Disallow,同时又指望里面的頁面靠 noindex 登出索引,那 noindex 基本不會被讀到——蜘蛛压根不會去取那個頁面。响應头形式的好處是,對非 HTML 文件(比如 PDF)同样适用。
這種矛盾狀態下正确的顺序是:先放開该目錄的抓取,让 noindex 能被讀到並生效,等這些 URL 從索引中消失後,再考虑是否要重新屏蔽抓取。
一個頁面從「已收錄」到「登出索引」,可以按這個顺序做
- 確認頁面确實已经被收錄。用 site: 查询配合網址检查工具交叉驗證,不要凭感觉判断。
- 確認该 URL 没有被 robots.txt 屏蔽,否則後面的 noindex 讀不到。
- 加上 noindex,meta 或响應头均可。
- 等待搜尋引擎重新抓取该頁面。索引條目的移除通常滞後于抓取,几周甚至更久都属正常,不要因為几天没變化就反复改動。
- 如果是彻底下线的内容,可以在 noindex 生效後改為 404 或 410;頁面短期還要保留(比如活動結束但可能复用),保持 noindex 就够了。
按頁面狀態選方式
- 頁面要保留,只是不想出現在搜尋结果里:noindex。
- 頁面永久刪除且有替代地址:301 到新地址。
- 頁面永久刪除且没有替代地址:404 或 410。
- 整站临时不可用:用 503 並给出 Retry-After,別直接返回 404,否則容易掉索引。
- 只是不想让蜘蛛浪費抓取预算去爬參數组合、後台路径:robots.txt Disallow。
判断标准其實很简單:如果你希望某個 URL 從索引里消失,就必须让搜尋引擎能抓到它,並且讀到「不要索引」的信号,或者拿到明确的 404 / 410。屏蔽抓取和登出索引,往往是两件事。
几個容易踩的点
- robots.txt 屏蔽和 noindex 同时用:noindex 失效,URL 可能長期留在索引里,只顯示一個光秃秃的地址。
- 只改 robots.txt、不處理已收錄頁面:老條目不會自動消失。
- 把 noindex 放在错誤位置:寫在依赖 JS 渲染後才出現的标簽里,或寫在不被讀取的模板区域,都可能不生效。
- 把 404 当临时方案:反复在 200 和 404 之間来回切換,會让搜尋引擎對该站点的狀態判断變得不稳定。
這些做法都無法保證多久生效,索引更新有自己的节奏。你能控制的是信号是否清晰、是否前後一致——先分清自己到底想拦抓取還是想登出索引,再動手。