出于好玩的目的,在黑五的时候买了几个证书,现在就来玩玩。过程还是挺简单的,只是部署过程中偶遇证书无效的问题。当然,这只是忘了配置证书链,算是小插曲吧。当然接下来还有一系列的配置需要做。
七牛的CDN是支持HTTPS,果断部署一个。然后修改当前的CDN。不过不能玩强制HTTPS,所以使用了一点小手段,让HTTPS和HTTP共存。由于配置了两套CDN,所以使用了几个全局变量来解决。
最后通过配合之前WordPress为js和css添加CDN [https://loveyu.org/3494.html]这段代码,进行替换,JS等加载问题,很容易搞定了。
当然这还没算玩,有些链接还需要处理,比如文章中的http怎么办,最简单的替换就行了,只是不是数据库,依旧代码处理,不过通过这个代码可以处理更多的内容,比如什么空格,代码压缩之类的,实现是相对有趣的多试试吧。
function two_heart_ob_start(){//启用缓存控制,放在header.php的第一行
ob_start();
}
function two_heart_ob_end(){//输出缓存,放在footer.php的最后一行
$content = ob_get_contents();
ob_clean();
if(is_ssl()){
//这里会被强制替换,所有加个空格
$content = str_replace("http ://loveyu.org", "https://loveyu.org", $content);
}
echo str_replace([
"src="" . CDN_PROTOCOL . "://loveyu.org/wp-content/uploads/",
"src='" . CDN_PROTOCOL . "://rs-01.loveyu.org/blog-resource/uploads/",
"alt=''",
"alt=""",
CDN_PROTOCOL.'://loveyu.org/avatar/'
], [
"src="" . CDN_PROTOCOL . "://" . CDN_ALL . "/blog/uploads/",
"src='" . CDN_PROTOCOL . "://" . CDN_ALL . "/blog/uploads/",
"alt='default'",
"alt="default"",
CDN_PROTOCOL."://".CDN_ALL."/blog/avatar/"
], $content);
}
ob_start();
}
function two_heart_ob_end(){//输出缓存,放在footer.php的最后一行
$content = ob_get_contents();
ob_clean();
if(is_ssl()){
//这里会被强制替换,所有加个空格
$content = str_replace("http ://loveyu.org", "https://loveyu.org", $content);
}
echo str_replace([
"src="" . CDN_PROTOCOL . "://loveyu.org/wp-content/uploads/",
"src='" . CDN_PROTOCOL . "://rs-01.loveyu.org/blog-resource/uploads/",
"alt=''",
"alt=""",
CDN_PROTOCOL.'://loveyu.org/avatar/'
], [
"src="" . CDN_PROTOCOL . "://" . CDN_ALL . "/blog/uploads/",
"src='" . CDN_PROTOCOL . "://" . CDN_ALL . "/blog/uploads/",
"alt='default'",
"alt="default"",
CDN_PROTOCOL."://".CDN_ALL."/blog/avatar/"
], $content);
}
最后一点,怎么让用户启用HTTPS呢?毕竟默认状态下是HTTP的,加个提示,链接到HTTPS过去,是的就这样简单,然后通过COOKIE记录,就可以在访问的时候进行判断。这样的处理应该是不会影响到搜索引擎的。
$is_ssl = function() {
if ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
}
return false;
};
if(!$is_ssl()){
if(isset($_COOKIE['wp_ssl']) && $_COOKIE['wp_ssl'] == "yes"){
header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
}else{
define('WP_HOME', "https://".$_SERVER['HTTP_HOST']);
define('WP_SITEURL', WP_HOME);
}
unset($is_ssl);
if ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
}
return false;
};
if(!$is_ssl()){
if(isset($_COOKIE['wp_ssl']) && $_COOKIE['wp_ssl'] == "yes"){
header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
}else{
define('WP_HOME', "https://".$_SERVER['HTTP_HOST']);
define('WP_SITEURL', WP_HOME);
}
unset($is_ssl);
这段代码同样可以用来实现多域名网站,当然在我这里是不可能啦。使用了一个闭包,小小的判断一下然后删除。
一切就绪,就等一部分人慢慢切换到HTTPS上来,最后在提交评论的地方强制HTTPS设置了,会有点小坑,嘿嘿!
试试高大上的https
你如愿了
我也开了,不过是说对搜索不友好,就只是支持了,没强制访问。
是的,没有完全强制
搞来有什么用处
好玩而已
评论以后真的是加密了~~好流弊哦,有钱,就是这么任性
好吧,你可以删除COOKIE,然后就不会强制加密
评论看看是不是强制https
好帅的样子。。
好帅气啊,浏览器上面会显示可信站点!
会不会再加个备案号更帅
我前阵子搬到了阿里云,备案10多天就下来了,蛮快的
我只是说说而已。当然目前不会备案。况且国内不支持翻越各种墙
其实我也已经后悔了,有翻墙的需求,再买个香港主机又不合算;备案号都有了,再放国外就白辛苦了
再买个国外的搬瓦工
有了https,瞬间更高大上了…哈哈,恭喜恭喜!
有么,其实我也觉得
我在浏览器输入你的域名打开的还是http,怎样能直接打开https呢
我记得顶部有个HTTPS的跳转框,还有评论以后会强制HTTPS吧?难道失效了?
我刚发现,我在http状态下评论无法提交,然后我手动在地址栏http后加个s,就提交成功了
你发现了一个潜在的BUG,已经解决了。而解决这个BUG产生了另一个BUG,我要疯了。
什么叫支持http?不太明白
安全链接,是HTTPS
本来速度就慢 还折腾https
在理,就这么点流量,根本看不出区别
感觉没什么必要
是的,纯粹瞎折腾
以前我也瞎折腾。。。
等明年证书免费了我也弄一个。
其实可以直接去弄个免费的证书,StartSSL,听说不错,只是我的申请没通过