记录一下那天晚上的排查过程。移动端模板在 title 后面统一拼了「移动版」三个字,桌面版没有,结果同一个页面在索引里出现两条标题不同的记录,移动端排名反而更差。
刚开始盯着「移动适配声明缺失,引擎无法判断哪一版是主版本」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。同一地址按 UA 返回不同 title,被当成内容不一致。另一种情况是移动版和桌面版各有一套 canonical,互相指向自己。
还有一种情况,CDN 按 UA 分别缓存,两个版本长期并存。
上来先用两种 UA 取同一地址的 title
curl -s -A 'Mozilla/5.0 (iPhone)' https://www.example.com/a/1.html | grep -o '<title>[^<]*'; curl -s https://www.example.com/a/1.html | grep -o '<title>[^<]*'
再往下确认 canonical 是否一致
curl -s -A 'Mozilla/5.0 (iPhone)' https://www.example.com/a/1.html | grep -o '<link rel="canonical"[^>]*>'
随后让两个版本输出同一个 title
add_filter('pre_get_document_title', fn($t) => str_replace('移动版', '', $t));
剩下的就是统一 canonical 并保留响应式
<link rel="canonical" href="https://www.example.com/a/1.html">
改完先别撤,确认这几项。两种 UA 返回的 title 完全一致,索引里的重复记录在一个月内合并成一条。
补一句。移动端不必在标题上做区分,同一地址返回不同 title 只会让引擎把它当成两个页面。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
