主题把规范标签输出在 body 顶部,浏览器能解析,索引报告却提示未选定规范网页,标签像是没生效。
原因不止一个,得分开看。规范标签只在 head 内生效。也可能是输出时机太晚,head 已经发送完毕。
另外,有些插件用脚本插入,源码里根本看不到。
上来先确认标签所在位置
curl -s https://www.example.com/post/ | grep -n 'rel="canonical"'
随后挂到 head 的早期执行
add_action('wp_head', 'my_canonical', 1);
只看源码不看渲染结果
curl -s https://www.example.com/post/ | sed -n '1,20p'
末了确认只输出一个标签
curl -s https://www.example.com/post/ | grep -c 'rel="canonical"'
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
别只看报错消失,验证要多做一步。标签出现在 head 内且是源码直出,重新抓取后规范地址正确,备用网页提示消失。
提醒一点。开发者工具里看到的不算数,要看 curl 拿到的原始 HTML。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
