网站启用 HTTPS 完整指南:从证书申请到全站迁移
HTTPS 是网站的基础设施标配,Google 和百度都将 HTTPS 作为搜索排名信号。本文将指导你完成从 HTTP 到 HTTPS 的完整迁移流程。
一、HTTPS 的重要性
1.1 HTTPS 的好处
- 数据加密:防止中间人攻击和窃听
- 身份验证:确认网站真实身份
- 数据完整性:防止内容被篡改
- SEO 优势:搜索引擎优先收录 HTTPS 页面
- 用户信任:浏览器不再标记为"不安全"
- 支持新特性:HTTP/2、HTTP/3、PWA 都需要 HTTPS
1.2 2026 年的现状
2026 年,全球已有超过 90% 的页面加载使用 HTTPS。未启用 HTTPS 的网站不仅会被浏览器标记为"不安全",还可能影响支付接口、API 调用等功能。
二、HTTPS 迁移流程
步骤 1:获取 SSL 证书
参考《Let's Encrypt 免费 SSL 证书申请教程》获取证书,或从可信 CA 购买。
步骤 2:配置 Web 服务器
Nginx 配置:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/example.com;
index index.php index.html;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
步骤 3:测试 HTTPS
配置完成后,使用以下方法测试:
# 使用 curl 测试
curl -I https://example.com
# 检查证书链
openssl s_client -connect example.com:443 -servername example.com
# 使用在线工具
# - https://www.ssllabs.com/ssltest/ (SSL Labs)
# - https://www.sslshopper.com/ssl-checker.html
步骤 4:修复混合内容
混合内容(Mixed Content) 是最常见的 HTTPS 迁移问题。当 HTTPS 页面加载 HTTP 资源时,浏览器会阻止这些请求。
# 查找混合内容
grep -r "http://" /var/www/example.com/ --include="*.php" --include="*.html"
# 查找数据库中硬编码的 HTTP URL
# 使用 SQL 替换
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://example.com', 'https://example.com');
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');
常见混合内容:
| 资源类型 | 修复方式 |
|---|---|
| 图片 | 将图片 URL 改为相对路径或 HTTPS |
| CSS/JS | 使用协议相对 URL(//example.com/style.css) |
| API 请求 | 更新 API 端点为 HTTPS |
| iframe | 确保嵌入内容支持 HTTPS |
| 字体 | 使用 HTTPS 字体源 |
步骤 5:301 重定向
确保所有 HTTP 请求 301 重定向到 HTTPS:
# 统一重定向
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
# 如果使用 Cloudflare,可以在仪表盘开启 Always Use HTTPS
三、SEO 注意事项
3.1 告知搜索引擎
方法一:提交站点迁移
在 Google Search Console 和百度搜索资源平台中:
- 添加 HTTPS 版本的新站点
- 提交新的站点地图
- 请求重新抓取 HTTPS 页面
方法二:使用 301 重定向
搜索引擎会跟随 301 重定向,将 HTTP 版本的权重传递到 HTTPS 版本:
http://example.com/page1
↓ 301 永久重定向
https://example.com/page1
3.2 Canonical 标签
<!-- 确保每个页面正确标注 canonical URL -->
<link rel="canonical" href="https://example.com/page1" />
3.3 更新站点地图和 robots.txt
<!-- sitemap.xml 使用 HTTPS URL -->
<url>
<loc>https://example.com/</loc>
<lastmod>2026-07-18</lastmod>
</url>
# robots.txt
Sitemap: https://example.com/sitemap.xml
四、HSTS 配置
HSTS(HTTP Strict Transport Security)告诉浏览器始终使用 HTTPS 访问你的网站:
# Nginx HSTS 配置
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
HSTS 部署步骤:
1. 先设置 max-age=3600(1 小时),观察是否有问题
2. 确认无误后增加到 max-age=31536000(1 年)
3. 考虑加入 HSTS Preload List(需提交到 https://hstspreload.org)
五、常见问题
迁移后网站访问量下降
原因通常是 301 重定向未正确设置或混合内容导致的。检查 Google Search Console 中的错误报告。
部分页面仍通过 HTTP 访问
检查:
- 是否有硬编码的 HTTP 链接
- CMS 中的站点 URL 配置是否更新
- CDN 中的回源设置是否使用 HTTPS
API 请求被阻止
API 客户端需要更新端点为 HTTPS。如果是第三方 API,确保它支持 HTTPS。
证书未自动续期
检查 Certbot 定时任务是否正常运行:
systemctl status certbot.timer
certbot renew --dry-run
六、检查清单
- SSL 证书已安装并正常工作
- HTTP 自动 301 重定向到 HTTPS
- 所有内部链接使用 HTTPS 或相对路径
- 数据库中的 URL 已更新为 HTTPS
- 外部资源(图片、字体、脚本)支持 HTTPS
- HSTS 已配置(逐步启用)
- Google Search Console 添加 HTTPS 站点
- 百度搜索资源平台添加 HTTPS 站点
- 站点地图已更新为 HTTPS
- CDN 回源使用 HTTPS
- API 端点已更新
- 第三方集成已更新
七、总结
HTTPS 迁移是一个需要细致处理的过程,但按照正确的流程操作,不会对网站造成负面影响。关键是做好准备工作、充分测试、并监控迁移后的效果。HTTPS 已经不是一个可选的"附加功能",而是网站的基础标配。即使是一个简单的个人博客,也值得花 30 分钟完成 HTTPS 配置。