这个坑值得记一笔。整站切到 HTTPS 后仍有页面被判混合内容,翻源码发现样式表里 @import 了一个 http 的字体地址,页面和主样式都是 https。

刚开始盯着「字体源没有 https 版本,只能换一家」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。字体地址写在样式表里,没有改成 https;旧版主题样式表里还留着 http 的外部引用;CDN 回源时把 https 改写成了 http。

动手时先在样式表里搜 http 引用

curl -s https://www.example.com/style.css | grep -n 'http://'

再往下改成 https 地址

@import url('https://fonts.example.com/font.css');

扫描主题目录下的所有样式

grep -rn "http://" wp-content/themes/*/css/

复验页面里的资源地址

curl -s https://www.example.com/post/1024 | grep -o 'http://[^" ]*' | head

这类改动我都写进变更记录,过两周再出问题时能对上号。

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

别只看报错消失,验证要多做一步。替换后浏览器不再报混合内容,相关提示在下一轮抓取后消失。

提醒一点。样式表里的引用最容易被漏掉,因为页面 HTML 看起来完全干净。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189