文章地址加不加斜杠都能访问,两条都返回 200,收录里出现了内容完全一样的两份。
排查方向其实有限,先把可能性排一排。伪静态规则同时匹配了两种写法。另一种情况是内链混用带斜杠和不带斜杠。
还有一种情况,canonical 各指自己。
先确认两种写法的返回码
curl -sI https://www.example.com/post-1 | head -1
接着统一跳转到带斜杠版本
rewrite ^/([^.]*[^/])$ /$1/ permanent;
修正内链与 canonical 写法
curl -s https://www.example.com/post-1/ | grep -i canonical
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
这台环境是别人交接的,不少默认值被动过,只能一项项核。
改完先别撤,确认这几项。不带斜杠的版本 301 到带斜杠版本,收录合并成一条。
跳转方向选哪种都行,关键是全站统一,混着用会出现无限跳转,配置改完一定要抽查几条真实地址。sitemap 与内链里的写法也要跟着统一,否则蜘蛛仍会发现两种版本。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。