很多站点把 HTTP 换成 HTTPS 之后,就默认这件事已经做完了。但蜘蛛抓取时看到的页面,往往不是你在浏览器地址栏里看到的那一个——只要页面里有任何一个资源还在用 http 加载,这次抓取就可能拿到一份残缺的文档。混合内容不会让整站立刻出问题,却会让蜘蛛对页面的完整度和可信度打折扣。
混合内容为什么值得单独查一遍
浏览器对混合内容的处理越来越严格:图片、脚本、样式表、字体、视频,只要走的是不安全的 http,轻则被降级加载,重则直接被拦截。用户端看到的是排版错乱、功能失效;蜘蛛端拿到的则可能是少了样式、少了主体内容、或者干脆只有一段占位文字的 HTML。索引一份这样的页面,价值有限,还会消耗抓取预算。
更麻烦的是,这类问题通常不会在页面上直接报错,只有打开开发者工具或者做一次全站抓取才会暴露出来。
常见的几种成因
- 模板里写死了 http 链接:主题、页头页脚、弹窗组件里的图片和脚本地址没有跟着协议一起改。
- 协议相对地址:写成以双斜杠开头的资源地址,在 https 页面下本来是安全的,但如果页面本身被 http 访问,就会退回 http。
- 正文里的外链图片和附件:早期发布的文章里插入的图片、PDF、压缩包,地址还停留在 http。
- 第三方组件:统计代码、在线客服、字体库、地图嵌入,供应商没有提供 https 版本,或者你用的还是老代码。
- CDN 与子域名:静态资源域名只配了 http 证书或根本没配证书,页面主体是 https,资源却是 http。
- 跳转链路不完整:http 版本没有 301 到 https,或者只跳了首页,栏目页、详情页仍然可以双协议访问。
自查可以按这个顺序走
- 用浏览器打开几个代表性页面,看控制台里的混合内容警告,记下具体的资源地址。
- 用抓取工具跑一遍全站,筛选出所有以 http 开头的外链和静态资源引用。
- 检查模板文件,而不是只在数据库里搜索,很多地址来自主题配置或组件代码。
- 翻一翻老文章的正文,尤其是几年前发布的图文内容,图片地址最容易遗留问题。
- 确认 sitemap、robots.txt、canonical、hreflang 里写的都是 https 域名,避免自己给出互相矛盾的信号。
- 确认证书覆盖所有用到的域名和子域名,并设置到期提醒,别等它过期了才被蜘蛛先发现。
- 确认 http 到 https 的跳转是 301,并且覆盖全站,而不是只处理首页。
容易漏掉的几个角落
内容里的外链资源
自己站内的资源好改,外部站点提供的图片和文件不好控制。如果对方只有 http,可以考虑下载到本地再引用,或者换一个可用的来源。
第三方脚本与字体
供应商是否支持 https,直接决定这段代码能不能留在页面上。不支持的组件,要么找替代方案,要么去掉。
子域名与 CDN
静态资源子域名、图片域名、旧站子域名,都要单独确认证书和跳转是否配置齐全。
HTTPS 只是基础设施,不保证收录,也不保证排名。但一份加载完整、资源一致的页面,至少不会因为技术问题在抓取环节被扣分。
改完之后怎么验证
改完不要只看首页。挑几个栏目页、详情页、列表页,重新打开控制台确认没有混合内容警告;再跑一次抓取,确认返回的 HTML 里不再出现 http 资源地址。同时观察服务器日志,看看蜘蛛对 https 页面的抓取是否稳定,有没有出现大量 4xx、5xx 或握手失败。
把这一步做成定期动作比一次性修复更实际:模板更新、插件升级、换 CDN、发新文章,都可能重新引入 http 地址。每隔一段时间抽查一次,成本不高,却能避免页面悄悄退回到半成品状态。