文章迁到 HTTPS 后正文里的图片地址还是 http,浏览器控制台报警告,页面返回码是 200,蜘蛛抓到的图片却一直是空图。

把日志和配置对完,能解释这个现象的基本就这几处。img 属于被动混合内容,浏览器只警告不拦截,容易被忽略;编辑器把图片地址存成了绝对路径,迁移时没有替换;CDN 对 http 图片做了 301,蜘蛛跟过去后拿到的是占位图;图片域名没有证书,https 版本直接握手失败。

先统计正文里残留的 http 资源

curl -s https://www.example.com/post/1 | grep -o 'src="http://[^"]*' | wc -l

接着在数据库里批量替换图片域名

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://img.example.com', 'https://img.example.com');

然后确认图片域名的证书可用

curl -sI https://img.example.com/a.jpg | head -1

给站点加一条 CSP 上报观察残留

Content-Security-Policy-Report-Only: img-src https: data:;

改完先别撤,确认这几项。替换完成后控制台的混合内容警告清零,图片抓取量在一周内恢复到迁移前的水平。

补一句。被动混合内容不会阻断渲染,但对蜘蛛来说是实打实的抓取失败,比脚本报错更容易被忽视。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189