站内链接有的写 /About/ 有的写 /about/,两个地址都能打开,收录里出现了两份内容。
真正麻烦的地方在于,几个原因的现象几乎一样。Nginx 默认区分大小写;模板里的链接大小写不统一;旧站迁移时链接没有规范化。
上来先分别请求两种写法对比
curl -sI https://www.example.com/About/ | head -1
随后统一转成小写并跳转
rewrite ^/(.*[A-Z].*)$ /${lowercase:$1} permanent;
修正站内链接输出
grep -rn '/About/' /www/wwwroot/site/wp-content/themes/
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
改之前我把相关日志按时间截了一段存着,事后对时间线用得上。
别只看报错消失,验证要多做一步。大写地址全部 301 到小写,收录里只剩一份,重复内容消失。
容易忽略的是,这条规则在 Apache 下可能表现不同,迁移环境前先测试,别把正常路径也一起改写掉。更稳妥的做法是在应用层统一生成小写链接,服务器只做兜底跳转;上线前用十条真实地址逐一验证。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。