由于博客被墙了,不知道是因为什么原因,又不想换域名,干脆整站上HTTPS吧。
我用的是CDN厂商CloudFlare 提供的免费证书。无需服务器部署直接在CDN后台设置页面规则即可,服务器只需在nginx配置里添加监听443端口:
listen 443
然而……typecho部署https后,出现不能加载http资源的问题
修改源码/var/Typecho/Common.php一个地方即可,加个替换
/**
* 将路径转化为链接
*
* @access public
* @param string $path 路径
* @param string $prefix 前缀
* @return string
*/
public static function url($path, $prefix)
{
$path = (0 === strpos($path, './')) ? substr($path, 2) : $path;
//return str_replace("http:","",rtrim($prefix, '/') . '/' . str_replace('//', '/', ltrim($path, '/'))); //原
return str_replace("http:","",rtrim($prefix, '/') . '/' . str_replace('//', '/', ltrim($path, '/'))); //修改后
}
这样,不论当前环境是http还是https都能很好的继承协议了,不再出现HTTPS由于安全问题不能加载http混合内容的问题。