在 site 查询的结果里,偶尔会看到 preview 子域、staging 地址、临时目录,或者带一长串哈希的预览链接。这些页面本来不是给搜索引擎看的,却因为某条链接、某个配置被蜘蛛发现,留下了索引记录。处理这类问题,先别急着提交移除,先弄清楚它是从哪条路径漏出去的,否则今天清掉一批,明天又冒出来一批。
先分清是被抓过,还是真的进了索引
这两件事经常被混在一起,处理方式却完全不同:
- 抓取日志里出现测试地址,只说明蜘蛛来过一次,不代表它会被收录。
- 索引里能查到,说明这个地址至少满足了一些条件:可以访问、内容非空、没有被 noindex 之类的信号拦下。
用 URL 检查工具或 site 查询确认它当前处在哪一层。如果只是被抓过,重点放在堵住入口;如果已经出现在索引里,还要多加一步退出处理。
常见的几条泄漏路径
- 内链残留:正式站页面里还挂着指向 staging 或预览域名的链接,比如帮助文档、旧公告、调试用的导航项。
- 站点地图与 RSS:构建时误把非正式域名写进 sitemap、RSS 或结构化数据里的地址。
- 外部引用:协作工具、工单系统、论坛或邮件里贴出的预览链接,被爬虫顺着抓走。
- 环境本身可公开访问:staging 没有做访问控制,域名解析到了公网,蜘蛛可以直接到达。
- 构建产物写死地址:前端打包时把绝对路径固定成预览域名,页面里的图片、接口地址、canonical 都指向它。
按渠道分组处理,别一条条删
把发现的地址按来源分组,优先级并不相同:
- 内链泄漏优先处理,因为它会持续被重新发现,改模板、删链接就能掐断。
- sitemap 或 RSS 泄漏,改生成逻辑,重新提交正确的文件即可。
- 外部引用能改的改,改不动的靠环境隔离兜底。
- 环境可公开访问属于根治项,加访问控制或从公网撤下。
已经进索引的地址怎么退出
- 先让页面返回合适的信号:确实不再存在的返回 404 或 410,仍然需要保留的加 noindex。
- 注意顺序问题:用 robots.txt 屏蔽抓取之后,蜘蛛看不到页面里的 noindex,索引里的旧记录反而更难自然消失。
- canonical 指向正式页只能解决“选哪个地址代表”,并不解决这个地址能不能被看到。
- 站点平台提供的移除工具适合少量、紧急的地址,大规模清理还是要靠前面几层。
把隔离写进发布流程
- 非正式环境统一加认证,或在服务器层面不对外开放。
- 预览域名默认带 noindex 响应头,而不是只依赖页面里的 meta 标签,有些渲染流程未必能读到。
- 构建时加一道域名白名单检查,sitemap、canonical、内链只允许出现正式域名。
- 发布后顺手抽查一次:site 查询加上抓取日志过滤非正式域名,确认没有新的泄漏。
预览地址被收录,多数不是蜘蛛乱抓,而是站内或站外确实存在一条通往它的链接。找到那条链接,问题才算处理了一半。
这类地址的处理思路,和站内其他收录问题一致:先确认现状处在抓取层还是索引层,再顺着来源分组收敛,最后用流程和配置把它挡在门外。单点清理很快,能防止复发的是那几道发布前的检查。