上线第二天统计里自然流量掉了六成,查日志发现大量 301 指向 staging.example.com,测试站的页面也开始出现在搜索结果里。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,规则是从测试环境直接复制过来的,Location 里写死了 staging 域名,上线前没人改。301 会被抓取工具记住,短时间内还会继续往测试站跑。
「301 目标域名」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
grep -rn 'staging\|test\.' /etc/nginx/conf.d/ sed -i 's#https://staging.example.com#https://example.com#g' /etc/nginx/conf.d/redirect.conf nginx -t && nginx -s reload
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,把所有跳转目标改成用变量拼当前域名,别写死主机名;上线前用 grep 扫一遍配置文件里的 staging 和 test 字样;已经发出去的 301 尽快改回,并对测试站加一条整站 301 回主站;在 Search Console 里对测试站提交移除。
最后用这个标准收尾,旧地址 301 的 Location 全部指向主域名,测试站访问时也跳回主站。
