先看现象。百度搜索结果里站点 logo 一直不显示,logo 图已经在搜索资源平台提交,后台状态是审核通过,移动端结果页仍然是默认的字母图标。

原因不止一个,得分开看。logo 的尺寸和比例不符合要求,实际传的是非正方形图。另一种情况是图片地址返回 302,百度抓不到最终文件。

不容易想到的是,站点完成了平台验证,但页面里没有声明 Organization。

还有一种情况,logo 更新后旧图被 CDN 缓存,抓到的还是旧版。

先确认 logo 文件可直接访问

curl -sI https://www.example.com/logo.png | grep -Ei 'HTTP/|content-type|content-length'

再往下按规范准备正方形位图

curl -o logo.png 'https://www.example.com/logo.png?x-oss-process=image/resize,w_200'

补上 Organization 标记

curl -s https://www.example.com/ | grep -o '"logo"[^,]*'

末了清掉旧图的 CDN 缓存

curl -X PURGE https://www.example.com/logo.png

这次没动代码,只在配置和运行环境上找原因。

怎么算真的好了,看的是同一批现象。logo 返回 200 且为 200x200 位图,Organization 里的地址与提交的一致,两周后结果页出现站点图标。

提醒一点。百度的站点 logo 和 favicon 是两套东西,前者要平台审核,后者看根目录文件,别只改一个。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189