Typecho开启全站HTTPS
给Typecho开启全站HTTPS,核心是让站点后台地址、文章链接和静态资源都走https协议,避免浏览器提示“不安全”。
操作顺序应该是:先部署SSL证书,再修改Typecho后台地址,最后调整伪静态和排查混合内容。
整个过程在宝塔面板或命令行下都能完成,下面按零基础可复现的方式一步步来。
准备SSL证书和确认环境
开始前需要确认两件事:你的域名已经解析到服务器,并且服务器上已经安装了Nginx或Apache。
如果用的是宝塔面板,可以直接在“网站”设置里申请Let's Encrypt免费证书,路径是:网站 → 设置 → SSL → Let's Encrypt,勾选域名后点击申请。
申请成功后,面板会自动配置证书路径,通常在 /www/server/panel/vhost/cert/你的域名/ 下。
如果你手动部署证书,需要准备好证书文件(.crt或.pem)和私钥文件(.key)。
在Nginx配置中,找到对应站点的server块,确认已经有类似下面的配置:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/yourdomain.com.crt;
ssl_certificate_key /path/to/yourdomain.com.key;
# 其他配置...
}
同时建议加一个80端口跳转到443的规则,这样用户访问http也会自动跳转:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
修改Typecho后台地址和站点地址
证书配好后,登录Typecho后台,进入“设置 → 基本设置”。
这里有两个关键字段:站点地址(URL) 和 后台地址。
把它们的http://改成https://,例如原来填的是 http://yourdomain.com,改成 https://yourdomain.com。
保存后,后台可能会立即跳转到https,如果证书有问题会打不开,所以务必先确保证书生效。
如果后台因为跳转无法登录,可以临时修改数据库。
用phpMyAdmin或命令行进入Typecho数据库,找到 typecho_options 表,其中 name 为 siteUrl 和 adminUrl 的两行,把 value 字段的http改成https。
命令行操作示例:
UPDATE typecho_options SET value = 'https://yourdomain.com' WHERE name = 'siteUrl';
UPDATE typecho_options SET value = 'https://yourdomain.com/admin/' WHERE name = 'adminUrl';
注意表前缀可能不是 typecho_,请根据实际安装时设置的前缀调整。
调整伪静态和模板中的硬编码链接
Typecho默认使用伪静态,如果开启HTTPS后文章页出现404,需要检查Nginx的rewrite规则。
在宝塔面板中,进入网站设置 → 伪静态,选择Typecho规则,或者手动填入:
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
另外,有些Typecho主题会在模板文件里写死 http:// 开头的图片或脚本地址,这会导致浏览器提示“混合内容”。
可以进入 /usr/themes/你的主题/ 目录,用grep搜索:
grep -r "http://" /www/wwwroot/你的站点/usr/themes/
找到后把 http:// 替换为 https:// 或改为协议相对地址 //。
如果使用了CDN或图床,也要在CDN后台开启HTTPS并更新回源协议。
验证HTTPS是否完全生效
配置完成后,用浏览器无痕模式访问 https://yourdomain.com,点击地址栏的锁图标,确认证书有效且没有混合内容警告。
按F12打开开发者工具,切换到Console面板,如果看到“Mixed Content”提示,说明还有资源走http,需要根据提示的URL去对应文件里修改。
还可以用在线工具如SSL Labs测试证书等级,或者用curl命令检查跳转:
curl -I http://yourdomain.com
预期返回 301 Moved Permanently 并指向https地址。
如果返回200而不是301,说明80跳转规则没生效,检查Nginx配置中是否有 return 301 或 rewrite 规则。
常见问题与避坑要点
后台无法登录或无限跳转:多数是因为站点地址改成了https,但证书没配好或浏览器缓存了旧跳转。
先清除浏览器缓存,再用数据库直接修改siteUrl和adminUrl。
文章页404:检查伪静态规则是否丢失,以及Typecho后台“设置 → 永久链接”是否启用了地址重写。
如果服务器是Apache,需要确保 .htaccess 文件存在且AllowOverride开启。