一个站点跑上几年之后,经常会变成这样:http://example.com、https://example.com、http://www.example.com、https://www.example.com 全都能打开首页,而且内容一模一样。从访客角度看没什么差别,反正都能用;但从抓取和运营角度看,等于把一个站拆成了好几个入口,外链、统计、缓存各记一份。
先弄清楚分裂是怎么形成的
常见的情况不是有人故意配置,而是历史遗留叠加:早期上线用的是 http,后来迁到 https 但没做强制跳转;中途换过域名前缀,改了一半;CDN 或负载均衡那层又配了另一套规则。结果是每个版本都能正常返回 200,谁也看不出问题。
自查:把所有能打开首页的地址列出来
这一步不要凭记忆,直接手输地址逐个验证,建议列成清单:
- http 与 https 各试一次,注意浏览器是否自动补全、是否被插件改写。
- 带 www 与不带 www 各试一次,包括二级域名栏目页。
- 试一下带 index.html 或 index.php 的地址,看是否与目录地址同时可访问。
- 试一下末尾带斜杠和不带斜杠的栏目地址。
- 如果你配置过测试域名、旧域名,也一并列出,确认它们当前的状态码。
每一条都记录三件事:返回的状态码、最终落到的地址、页面里的 canonical 指向哪里。三者对不上,就是需要处理的地方。
确定唯一主版本,其余全部跳过去
主版本选哪个没有绝对答案,通常跟着品牌习惯走:习惯带 www 就统一带 www,习惯裸域就统一裸域,协议一律用 https。关键是只留一个,其余版本用 301 指过去。
跳转尽量一步到位
要避免的是这种链条:http://www 先跳到 https://www,再跳到 https://裸域。每多一跳就多一次等待,抓取端也更费劲。配置时直接让所有非主版本一次性跳到最终地址,不要经过中间站。
站内链接和资源引用要同步改
服务器跳转只解决了入口问题,页面内部的引用同样会触发跳转。检查导航菜单、面包屑、正文内链、图片和脚本地址,把写死的旧版本域名替换成主版本。这一步容易被忽略,尤其是模板里残留的绝对地址。
这些位置也要一起对齐
- 页面 canonical 标签,确认输出的是主版本地址。
- 站点地图里收录的地址,逐条核对前缀。
- 分享卡片里的 og:url,避免转发出去指向另一个版本。
- 结构化数据中的 url 和 @id 字段。
- 统计后台、站长平台的站点属性配置,几套属性混用会让报表口径不一致。
- CDN 的回源域名和缓存规则,确认缓存键不会因为协议不同而各存一份。
调整完成后不要马上看结论。跳转生效、缓存过期、抓取端重新计算都需要时间,观察两到四周再评估数据变化会更稳妥。
小结
域名与协议统一属于那种“改起来不复杂、但一直没人管”的基础工作。它不会立刻带来流量,却能让后续所有跟抓取、统计、外链相关的判断建立在同一份数据上。花半小时把入口地址列清楚,往往比反复分析报表更有用。