Search Console 里同一篇文章有两条地址,一条末尾带斜杠一条不带,两边都返回 200,canonical 各自指向自己,展示次数被拆成两半。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,服务器没有统一尾斜杠策略,Nginx 的 try_files 对两种写法都能落到同一个文件。canonical 用的是当前请求地址,带斜杠的页面就输出带斜杠,两个版本互相不认。
「尾斜杠重复收录」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。
# Nginx 去掉文件末尾多余斜杠 rewrite ^/(.+)/$ /$1 permanent; curl -sI https://example.com/guide/hello/ | grep -iE '^(HTTP|location)'
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,定一条规则,目录带斜杠、文件不带,全站只用一种;给另一种写法加 301 跳到规范版本,别两个都留 200;模板里的 canonical 用 get_permalink 输出,不要拿请求变量拼;内链和 sitemap 一起改成规范写法,避免每次点击多一跳。
最后用这个标准收尾,带斜杠地址 301 到不带斜杠版本,页面 canonical 两条一致,Search Console 里重复地址合并成一条。
