报错是这么冒出来的。文章模板把标题和品牌名用全角竖线拼在一起,输出成「nginx 配置示例|站点名」,百度搜索结果里只显示前半段,品牌名几乎没有出现过,必应倒是完整显示。
中间走过弯路,把「标题总长度超过展示上限,末尾的品牌名被截掉」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。全角竖线被部分解析器当成句子结束符,后半段被丢弃。少数情况下是分隔符前后没有空格,中英文混排时被整体当成一个词。
少数情况下是模板里同时用了三种分隔符,输出不稳定。
动手时先看搜索结果的标题实际展示到哪
site:www.example.com nginx 配置示例
然后把分隔符统一成半角竖线并加空格
curl -s https://www.example.com/post/1024 | grep -o '<title>[^<]*</title>'
品牌名控制在六个字以内并放到末尾
grep -rn 'document_title_separator' functions.php
剩下的就是抽查十篇文章的标题字节长度
for u in $(head -10 urls.txt); do curl -s $u | grep -o '<title>[^<]*</title>'; done
怎么算真的好了,看的是同一批现象。搜索结果里品牌名能完整出现,标题不再被从竖线处切断,点击率一周内有小幅回升。
提醒一点。全角标点在中英文混排里语义不明确,标题里的分隔符尽量用半角加空格,展示更稳定。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
