站点在文章页底部加了分享按钮,落地地址带 ?from=share&ch=wx。GSC 里同一篇文章出现三个已索引地址,canonical 全都指向带参数的分享版,正文页反而成了备用网页。

真正麻烦的地方在于,几个原因的现象几乎一样。分享组件的地址生成函数直接取了 window.location.href;主题的 canonical 输出没有做参数过滤,照抄当前请求地址;内链和外部投放都用了分享地址,反过来强化了参数版本;主题输出的 og:url 也取了当前地址 分享卡片同样指向参数版。

上来先确认 canonical 实际输出的内容

curl -s https://www.example.com/post/123?from=share | grep -o '<link rel="canonical"[^>]*>'

再往下把 canonical 统一成去掉参数的固定地址

add_filter('wpseo_canonical', function($u){ return strtok($u, '?'); });

随后分享链接改成跳转页而不是直接带参

location = /share { return 302 /post/123?from=share; }

两周后核对索引里的地址数量

site:www.example.com inurl:from=share

恢复的判定其实很直接。改完十天 site 查询里带 from=share 的地址归零,文章页的展示量回到合并前的水平,备用网页标记消失。

容易忽略的是,canonical 要写成不含任何跟踪参数的绝对地址,社交参数、排序参数、会话参数都属于同一类问题。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189