switch_to_blog(2);
update_option('seo_canonical_domain', 'https://news.example.com');
restore_current_blog();

子站文章页源码里的 canonical 全部指向 www.example.com,搜索结果里子站页面被当成重复内容,收录掉了 70%。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,SEO 插件用 get_site_option 读网络级设置,canonical 模板里写死了主站域名。子站没有单独覆盖,输出时也没有按当前 blog_id 取地址。

围绕「子站 SEO 配置覆盖」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。

处理上按这个顺序:把 get_site_option 改成 get_option;检查 canonical 模板是否用了 home_url;为子站单独保存一份 SEO 配置。

改完只确认一件事:子站 canonical 指向自身 URL,主站 canonical 不变,抽查 10 篇都正确。

作者 9823189