同一个站点同时存在 http 和 https、带 www 和不带 www 的可访问版本,是很多收录问题的起点。看起来只是多了一个入口,实际结果是蜘蛛可能把同一批页面当成两套 URL 分别抓取和记录,索引量虚高、权重分散,用户搜索时命中的还可能是旧版本。
先确认站点实际有几个可访问版本
不要凭印象判断,逐个请求比对比看日志更直接。用无痕窗口或命令行访问下面几种组合,记录状态码和最终落地的 URL:
- http://example.com
- http://www.example.com
- https://example.com
- https://www.example.com
重点看两件事:一是每种写法返回的是 200 还是 301、302;二是如果返回 301,链条有几跳,最终落到哪个版本。有些站点首页做了跳转,但内页在旧版本下仍然直接返回 200,这种情况最容易被忽略。
确定一个主版本,其余全部跳转
主版本定下来之后(通常是 https 加 www 或 https 不加 www,取决于历史积累和现有外链情况),其余版本应该 301 到它。几个实操点:
- 用 301,不用 302 或 JS 跳转。302 是临时语义,合并信号弱。
- 一次跳到最终地址,避免 https 跳 http 再跳 https 这类多跳链条。
- 跳转要覆盖全站,不只是首页。可以在服务器层或 CDN 层统一处理。
- 内链、Sitemap、canonical、结构化数据里的 URL,都统一写成主版本。
canonical 和跳转的关系怎么理解
跳转是硬性信号,canonical 是提示性信号,两者不冲突,理想状态是一致:旧版本 301 到主版本,主版本页面上的 canonical 指向自己。
要避免的是 A 页 canonical 到 B、B 页又 canonical 回 A 的闭环,这种情况下搜索引擎只能自己判断,收敛结果不可控。如果短期内没法做全站跳转,退一步至少要全站 canonical 指向主版本,但优先级要清楚:能用跳转解决的,不要只靠 canonical。
旧版本已经被收录了,怎么处理
跳转生效后,旧版本 URL 一般不需要单独提交删除,等蜘蛛重新抓取时会看到 301 并逐步更新索引。这个过程快慢和站点规模、抓取频率有关,几周到几个月都算常见。
需要注意几点:
- 跳转长期保留,不要上线几个月后就撤掉。
- 站点地图只放主版本的 URL,旧版本不要出现在里面。
- 不要给旧版本加 noindex,它和跳转同时出现时,可能让合并信号变得更模糊。
- 在搜索控制台里留意“重复网页,搜索引擎选择的规范网页与用户指定的不同”这类提示,它通常说明站内还有信号不一致的地方。
几个常见坑
- 只跳首页。内页在旧版本下依然返回 200,等于给蜘蛛留了一整套镜像。
- 混合内容。https 页面里引用了 http 的资源,可能让蜘蛛在两种协议之间来回切换。
- CDN 缓存了旧规则。改完配置后记得刷新缓存并复测。
- 证书不覆盖带 www 的域名。这种情况下 https 版本会报错,检查时容易被误判成这个版本不存在。
收尾检查
改完之后按这个顺序复测一遍:四个版本组合逐个请求,确认除主版本外都是单跳 301;随机抽几个内页,确认旧版本同样跳转;检查页面源码里的 canonical 和 Sitemap 是否统一;最后观察一段时间的索引量与落地 URL 变化,而不是当天就下结论。