故障表现

查看源代码发现页面头部有两个 canonical,指向还不一样。

问题出在哪

主题与 SEO 插件各自输出一套头部标签,没有做互斥。判断时先分清是 canonical 重复 本身的配置问题,还是上游调用、运行环境带进来的差异;前者改配置就能收口,后者要沿着请求链路一层层往上找,处理顺序不能颠倒。先在出问题的机器上复现一次,把报错原文和发生时间记下来,再对着日志定位。

按这个顺序处理

  1. 保留插件输出并移除主题的钩子
  2. 或在主题设置里关闭自带 SEO
  3. 复查所有模板

对应的命令或配置片段如下,可直接复制:

remove_action('wp_head', 'theme_canonical', 10);
# 子主题 functions.php 中执行
add_action('after_setup_theme', function () {
  remove_action('wp_head', 'theme_canonical', 10);
});

改完只在一台机器上验证不够,至少从外网和移动网络各试一次,才能确认不是本地缓存造成的假象。不要一次改多个参数,每次只动一处并记录下来,否则现象变了也说不清是哪个改动起的作用。

怎么确认改好了

页面只保留一个 canonical,指向正确地址。

作者 9823189