一個很常见但顺序反了的做法
想清掉一個頁面时,不少站点會把两招一起用:在 robots.txt 里 Disallow 掉路径,同时在頁面里寫 noindex。看起来是双重保險,問题却出在顺序上——Disallow 先生效,蜘蛛就不會去請求這個地址,頁面上的 noindex 也就没机會被讀到,索引條目反而更容易長期留着。
這種情况在日誌里往往表現得很安静:该 URL 几乎没有蜘蛛訪問记錄,站長以為是“蜘蛛不来”,實际是自己把门鎖上了。
robots.txt 管的是抓取,不是索引
robots.txt 传達的是“別来抓”,而不是“請把這頁從索引里删掉”。当搜尋引擎無法抓取内容时,它仍可能依據外鏈锚文本、歷史資料保留一個索引條目,表現形式通常是没有摘要、只顯示一行網址。也就是说,阻止抓取和登出索引是两件獨立的事,前者不會自動带来後者。
要取消的是索引條目,要限制的是抓取行為。两個目标不同,動作顺序就不能颠倒。
想让頁面登出索引,顺序應该是這样
- 先放開抓取:確認该 URL 没有被 robots.txt 拦截,能正常返回 200 狀態碼。
- 再放 noindex:通過頁面头部区域的 meta robots noindex,或响應头里的 X-Robots-Tag,保證它在原始 HTML 或 HTTP 头中真實存在。
- 保持可訪問:让頁面繼續被抓取,直到蜘蛛重新訪問並處理這個标簽。等待時間取决于站点被抓取的频率。
- 复查结果:用搜尋框查该 URL,或用站点管理工具里的 URL 检查與移除請求功能確認狀態。
- 最後再考虑屏蔽:確認索引條目已经處理掉之後,如果出于服務器压力或版權原因要限制抓取,再添加 Disallow。如果頁面包含不该公開的信息,必须靠登入權限或直接刪除内容,robots.txt 挡不住普通用戶的訪問。
這几步之間都要给蜘蛛留出重新抓取的机會。中途急着把 Disallow 加回去,前面的工作基本作废。
noindex 明明寫了却没生效
- 标簽寫在頁面正文区域,或由 JS 動態插入,原始 HTML 里並不存在。
- 頁面返回 404、500 等狀態碼,抓取失敗,标簽自然讀不到。
- 响應头里有 X-Robots-Tag,與頁面里的 meta 設定互相冲突,或中間层覆盖了响應头。
- 寫法有誤,例如标簽名拼错、寫成键值對形式、寫成注释。
- 该 URL 仍被 sitemap、内鏈、分頁鏈大量指向,蜘蛛反复抓到的是舊狀態。
顺带核對 canonical 與 sitemap
已决定 noindex 的頁面,不應该繼續出現在站点地图里,否則等于一邊说別收錄,一邊又主動提交地址。canonical 也要一並检查:如果它指向的是一個需要保留的正常頁面,處理方式就應该是做規范归属,而不是整頁刪除;如果 canonical 與 noindex 各自指向不同的目标,蜘蛛的判断會更犹豫,處理周期也會拉長。
動手前的自查清單
- 该 URL 現在能不能被正常抓取?robots.txt 是否還拦着它?
- noindex 在原始 HTML 或响應头里能否直接看到?
- 頁面返回的狀態碼是否稳定在 200?
- sitemap 和内鏈里是否還大量指向這個地址?
- 是否與 canonical 等其他指令冲突?
- 頁面内容是否涉及敏感信息?如果是,是否已经用訪問權限或刪除来處理?
回到那個最常见的誤判:索引里還能搜到,往往不是标簽寫错了,而是抓取被拦在了前面。把放行抓取、寫入 noindex、等待處理、复查结果這几步按顺序走完,再决定要不要屏蔽抓取,處理的确定性會高很多。