文章正文里有一批 2023 年插入的图片还是 http 地址,页面本身是 https,必应抓取时把这批页面标成混合内容,图片不展示。
真正麻烦的地方在于,几个原因的现象几乎一样。历史正文里的图片地址没有随迁移批量替换。也可能是编辑器粘贴外站图片时保留了原协议。
另外,CDN 回源支持 http,所以前端不报错。
动手时先统计正文里的 http 图片数量
SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%src="http://%';
批量替换成 https
UPDATE wp_posts SET post_content = REPLACE(post_content, 'src="http://', 'src="https://') WHERE post_status = 'publish';
再往下抽查页面源码
curl -s https://www.example.com/p/1024 | grep -c 'src="http://'
复检必应后台的混合内容提示
curl -sI https://www.example.com/uploads/2023/a.jpg
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
白天有业务在跑,能验证的部分都压到了晚上做。
当时还开着另一个排查窗口,两边日志对照着看才定位到。
改完先别撤,确认这几项。替换后页面里不再有 http 资源引用,必应后台的混合内容提示一周内消失。
正文里的外站图片改成 https 前先确认对方支持,不支持就下载到本地再引用。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
