修复HTTPS网站的混合内容问题

您已经安装了SSL证书,但浏览器仍然显示一个不完整或警告标志的挂锁图标?这就是混合内容(Mixed Content)——这是从HTTP迁移到HTTPS后最常见的问题。本指南解释了什么是混合内容,如何检测它,以及如何彻底解决WordPress和非WordPress网站上的混合内容问题。

什么是混合内容?

混合内容发生在HTTPS页面加载某些资源时——比如图像、脚本、CSS或iframe——是通过HTTP(没有S的协议)进行加载的。现代浏览器会阻止或警告用户这些资源,因为在HTTPS页面上加载HTTP内容存在安全风险。

混合内容分为两种类型:

如何检测混合内容

1. 浏览器开发者工具

按F12打开浏览器控制台(Console),查找以"Mixed Content"或"Blocked loading mixed-content"开头的警告信息。这些消息会包含出现问题的资源的确切URL。

2. 在线检测工具

使用Why No Padlock (whynopadlock.com)或JitBit SSL Check等工具扫描您的页面,一键列出所有混合内容URL。

3. 数据库搜索(WordPress)

SELECT * FROM wp_posts WHERE post_content LIKE '%http://%';

修复WordPress上的混合内容问题

方法1: 使用Really Simple SSL插件

这是WordPress上最简单的解决方法。Really Simple SSL插件可以自动处理混合内容,具体方式为:

方法2: 在WordPress设置中更新URL

进入WordPress后台 → 设置 → 常规,将"WordPress地址"和"网站地址"都从http://改为https://

方法3: 数据库批量查找替换

使用Better Search Replace插件或WP-CLI命令将数据库中的http://yourdomain.com替换为https://yourdomain.com:

wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables

警告:在运行查找替换前,务必备份您的数据库。错误的替换可能会破坏您的网站。

修复非WordPress网站上的混合内容

1. 使用协议相对URL

<!-- 修改前 --> <script src="http://cdn.example.com/library.js"></script> <!-- 修改后 --> <script src="//cdn.example.com/library.js"></script>

2. 内容安全策略: upgrade-insecure-requests

通过.htaccess添加此响应头,让浏览器自动将HTTP升级为HTTPS:

Header always set Content-Security-Policy "upgrade-insecure-requests"

或在HTML的head标签中添加:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

3. 直接在源代码中修复URL

grep -r "http://" /var/www/html/ --include="*.html" --include="*.php"

防止未来出现混合内容问题

为长期防止混合内容而设置HSTS

HTTP严格传输安全(HSTS)是一种响应头,可以指示浏览器始终使用HTTPS连接到您的网站。一旦浏览器收到HSTS响应头,它就会在max-age指定的时间段内自动将所有未来的HTTP请求升级为HTTPS——无需等待服务器端的重定向。这消除了初次请求通过HTTP连接可能被拦截的窗口。

将HSTS添加到您的.htaccess文件中:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

理解每个指令的含义:

警告:在添加HSTS前,请确保您网站上的每个URL都能正确通过HTTPS运行。HSTS响应头会导致浏览器在整个max-age期间拒绝HTTP连接。如果您的SSL证书之后出现问题,访客将无法访问您的网站,直到max-age过期。

高级混合内容检测方法

除了浏览器开发工具和基本的在线扫描器,这些方法可以为多页面网站提供更广泛的覆盖:

使用Screaming Frog或Sitebulb进行爬虫扫描

桌面爬虫工具可以自动遍历您网站上的每个URL,并自动标记混合内容资源。它们可以将结果导出为CSV格式,方便您批量修复URL——特别适用于拥有数百个页面的大型网站。

检查Google Search Console的安全问题

Google Search Console会报告安全问题,包括Googlebot在爬虫过程中检测到的混合内容。进入"安全和手动操作" → "安全问题"即可查看受影响页面和资源URL的列表。

通过SSH进行服务器端grep搜索

如果您有SSH访问权限,可以直接在代码库中搜索硬编码的HTTP URL:

grep -rn "src=[\"']http://" /var/www/html/ --include="*.php" --include="*.html" --include="*.js" grep -rn "href=[\"']http://" /var/www/html/ --include="*.php" --include="*.html" --include="*.css"

混合内容、Core Web Vitals和SEO影响

混合内容不仅仅是一个安全问题——它直接影响Core Web Vitals和搜索排名。当浏览器阻止混合活跃内容时,控制交互性的脚本会无声地失败,导致交互到下一次绘制(INP)分数升高。被阻止的样式表也可能导致布局偏移,增加累积布局偏移(CLS)。这两项都是Google排名信号。

混合内容类型 浏览器行为 SEO影响
被动内容(图像、视频) 控制台警告,仍会加载 轻微 — 挂锁不完整,降低信任信号
活跃内容(脚本、CSS、iframe) 完全被阻止 — 功能失效 显著 — 损害INP、CLS和用户体验信号
iframe中的混合内容 整个iframe被阻止 如果iframe被阻止导致布局偏移,CLS会增加

Google的索引系统还会评估页面的可信度,这是E-E-A-T(经验、专业知识、权威性、可信度)评估的一部分。持续显示浏览器安全警告的页面会发出低可信度信号——这可能会随着时间推移抑制有机排名,即使没有手动处罚。

AsiaGB虚拟主机在每个计划中都包含免费的Let's Encrypt SSL证书,可以直接从DirectAdmin激活。SSL安装完成后,使用本指南清理迁移前期留下的任何混合内容问题。

所有计划都包含免费SSL证书

免费Let's Encrypt SSL证书,设置简单,立即可用。从500泰铢/年起,包含SSD存储和99%正常运行时间保证。

查看虚拟主机计划

查看泰国虚拟主机全部套餐 →