MENU

Typecho实现全站化https(SSL)

July 12, 2020 • 走进科学

近年来随着浏览器强推https(Hyper Text Transfer Protocol over SecureSocket Layer以安全为目标的 HTTP 通道),SSL(Secure Sockets Layer 安全套接字协议)已经成为了硬性指标,许多知名浏览器会标注http连接网站是不安全的。至此无数的网站部开始署了SSL。那接下来让我们看看Typecho是如何开启https的。

因为是小白很多都不懂,在给Typecho上https时爬了不少坑,这里先讲述下我开启SSL的亲身经历:服务器成功部署了SSL后,也设置了301跳转,强制将http连接提跳转到https,Typecho系统设置的网站地址也设置了https开头连接。以为大功告成,可是奇怪事情发生了-网站页面错乱,就连管理页面也是如此。使用开发者工具检查,发现原因竟然是:很多的页面资源、样式表等,使用http连接。然而浏览器是不允许https页面中调用http连接,也正式这个原因导致所有页面出现错乱。如下图:
错误检查.png
原因找到了,可是我不知如何去修改。后来逼的我备份重装Typecho,可依然于事无补。最后百度一查,竟然这么简单,方法如下:

Typecho后台 -> 设置 -> 基本设置 -> 站点地址改成https的域名是必须的。
找到站点根目录下config.inc.php配置文件,加入如下代码:

/** 开启HTTPS 
*/define('__TYPECHO_SECURE__',true);

由于Chrome浏览器对HTTPS要求较高,其他浏览器已经显示小绿锁,可是Chrome还是有警告提示。关于这部分问题日后更新

附:http转https的301跳转代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:From-Https} !^on$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?deepsc.cn$ [NC]  //地址换成自己的
RewriteRule ^(.*)$ https://www.deepsc.cn/$1 [R=301,L]      //地址换成自己的
</IfModule>