做開發和运营的人常會遇到一種情况:某段還没正式發布的文案,在搜尋引擎里能搜到,点進去却是測試域名或者带長串參數的预览地址。這類 URL 本身没有搜尋價值,進了索引之後還會和正式頁面争同一個内容信号。處理這件事的重点不在于“删掉”,而在于先把可被抓取的入口收口。
先確認被收錄的是哪個地址
域名不同,處理方式完全不同,所以第一步是看清楚。用 site: 加上對應域名查一遍,再換几段正文里的原句搜一遍,通常能定位到具体形式:
- 測試子域:带 staging、test、dev、beta 前缀的域名或獨立子域。
- 同域下的预览路径:如 /preview/、/draft/、带随机串的临时目錄。
- 對象存储或 CDN 預設地址:静態站、附件、图片被單獨部署时生成的那個域名。
- 带分享令牌的連結:在线文档、原型工具、图床生成的公開連結,往往一串随机字符就能直接打開。
把這几種分開记錄,才知道该在哪一层做拦截。混在一起處理,容易出現“屏蔽了 A,结果收錄的是 B”的情况。
這些地址是怎么被爬虫發現的
没有任何地方引用過的 URL,爬虫一般拿不到。所以發現入口可以反推:
- 開發时把预览地址贴進了工單、聊天群或公開论坛,被第三方頁面轉载或引用。
- 正式站的内鏈、導航或站点地图里混進了測試路径,比如複製模板时忘了改連結。
- 上线流程里把測試域名提交到了搜尋後台,或者一份 sitemap 文件里同时列了两套域名。
- 服務器日誌里的 Referer 能看出第一批訪問来自哪里,這比靠猜可靠得多。
處置顺序:先断入口,再改信号
- 清理引用来源。内鏈、導航、站点地图、已经公開出去的分享連結,能删的删,能撤回的撤回。入口還在,信号怎么改都會反复出現。
- 限制訪問。给測試环境加登入驗證或限制来源 IP,让爬虫拿不到内容,比事後一個個去屏蔽更省事。
- 让狀態碼變干净。如果整個測試域名不再使用,让它统一返回 404 或 410,比留着一個可訪問的頁面更明确。
- 必要时加 noindex。注意顺序:noindex 要生效,頁面必须能被抓取到。如果先用 robots.txt 把整個目錄屏蔽掉,爬虫看不到 noindex,索引里的舊记錄反而可能留得更久。
- 正式域名上线後补上規范化。如果同一份内容确實要在多個地址提供,用 canonical 指向正式地址,並確認正式地址本身可訪問、狀態正常。
- 走一遍移除流程。確認頁面已经不可訪問之後,再用搜尋後台的移除工具加速。索引更新本身有延迟,不必反复提交。
robots.txt 的作用是“不要来抓”,不是“從索引里删”。已经收錄的 URL,屏蔽抓取往往只能阻止内容被更新,记錄本身還會在结果里存在一段時間。
上线前的自查清單
- 測試域名和预览路径没有出現在正式站的内鏈、導航與站点地图里。
- 站点地图只列正式域名,其中的 URL 都能正常訪問。
- 分享類連結設定了有效期,或預設不對外公開。
- 打包發布流程里没有把測試环境的配置或連結带上去。
- 上线後用搜尋框和服務器日誌各核一遍,確認没有遗漏入口。
已经進了索引,還要等多久
頁面不可訪問之後,索引记錄的移除速度取决于抓取频率,快的几天,慢的需要更久。這期間不要频繁改策略:一會儿 noindex、一會儿 robots 屏蔽、一會儿又放開,信号互相冲突反而拖慢處理。把入口收干净、狀態碼稳定下来,剩下的交给時間。