搜索引擎里同一页面出现两个地址,权重被分散,统计也分成两份。乍看像缓存或者权限的锅,追下去往往不是。
server {
server_name example.com;
return 301 https://www.example.com$request_uri;
}
追下去是这么回事:两个主机名都能直接返回 200,没有统一到主域名,缺少规范跳转。
「www 跳转」这类改动最怕改一半,回滚脚本先准备好,再动生产。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,在服务器层配置 301;确认只跳一次不形成循环;页面内 canonical 指向主域名。
验收就看一点,访问不带 www 的地址会 301 到主域名,只跳一次。