先看现象。WordPress 的标签归档是 /tag/php,主题又注册了一条 /tags/php 的重写规则,两个地址都返回 200,页面内容一样。必应各收了一份,标签页收录数直接翻倍,权重也被拆成两份。
把日志和配置对完,能解释这个现象的基本就这几处。主题和插件各注册了一条标签重写规则 前缀不同。少数情况下是两个地址的 canonical 都指向自己 没有合并信号。
少数情况下是旧链接和站内推荐混用两套前缀。
不容易想到的是,sitemap 里两套地址都列了出来。
动手时先分别请求两个前缀看状态码
curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/tags/php
接着加一条 301 把多余前缀并过去
rewrite ^/tags/(.*)$ /tag/$1 permanent;
然后清理 sitemap 里的重复前缀
grep -c '/tags/' sitemap.xml
等前面都确认过,再替换正文里的旧前缀链接
UPDATE wp_posts SET post_content = REPLACE(post_content,'/tags/','/tag/');
恢复的判定其实很直接。访问 /tags/php 返回 301 且落到 /tag/php,索引里同标签只剩一条地址。
提醒一点。重写规则冲突不会报错,两个前缀都能打开时只能靠日志和 sitemap 才发现。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
