分类: 云计算
2022-01-14 10:23:14
随着HTTP明文协议的弊端不断浮现,以及互联网推出的多项的政策,HTTPS正逐步取代HTTP,成为主流的传输协议。同时SSL证书也成为了网站设置HTTPS的最常见的解决方法,但在部署SSL证书的过程中,很多网络用户都会遇到不同的问题,无法完全正确的部署SSL证书。
方法一:传统方式将 WordPress 开启整站 HTTPS 协议
1.修改wordpress后台配置中的地址改为https版本
技术分享
通过上面的设置,绝大部分导航中的链接就由wordpress系统自动改为HTTPS版本。
2、对于正文中的内部链接需要手工修改,修改的方法有两种:
1)直接在数据库中更新,
对于数据库不熟悉的站长不推荐这种方法,对数据库错误的更新对网站可能是毁灭性的打击,建议更新前最好备份数据库。ssl证书申请可以在蔚可云申请。
2)利用wordpress提供的api来重写链接。在使用的主题(themes)的目录下的 function.php加入如下代码:
//转换http为https
function change_ssl(){
if( is_ssl() ){
function change_ssl_main ($content){
$siteurl = get_option(‘siteurl’);
$upload_dir = wp_upload_dir();
$content = str_replace( ‘http:’.strstr($siteurl, ‘//’), strstr($siteurl, ‘//’), $content);
$content = str_replace( ‘http:’.strstr($upload_dir[‘baseurl’], ‘//’), strstr($upload_dir[‘baseurl’], ‘//’), $content);
return $content;
}
ob_start(“change_ssl_main”);
}
}
add_filter(‘get_header’, ‘change_ssl’);
这个方法优点是可逆,不会对网站的数据库有什么影响,可以使网站在HTTP和HTTPS之间自由转换,推荐使用这种方法。
调整完内部链接后,检查整个网站的页面,包括首页,栏目页,内容页,sitemap,页面head部分内容,比如:css,js,canonical等,是否都转换成了HTTPS版本。
方法二、代码方式让 WordPress 开启整站 HTTPS 协议
我们都知道,我们如果使用了 WordPress 的多媒体上传和插入图片附件的时候,附件都被 WordPress 标记为了绝对链接,一般需要修改数据库,但这种方法子凡是非常不推荐的,对于不是非常熟悉数据库的同学们估计网站直接被毁也是可能的,所以子凡在这里推荐一种自己正在使用和即将在 Fanly 主题 2.0 支持的一种方法。
以下代码已于 2017/2/5 更新,不仅仅支持 WordPress 站内链接支持 HTTPS 协议,支持多域名的多媒体附件 HTTPS 协议,同时也新增方法二相对链接功能支持。
老规矩,编辑当前主题下的 functions.php 文件,加入以下代码:
代码一:HTTPS 绝对链接替换
//WordPress SSL at 2016/12/29 update
add_filter(‘get_header’, ‘fanly_ssl’);
function fanly_ssl(){
if( is_ssl() ){
function fanly_ssl_main ($content){
$siteurl = get_option(‘siteurl’);
$upload_dir = wp_upload_dir();
$content = str_replace( ‘http:’.strstr($siteurl, ‘//’), ‘https:’.strstr($siteurl, ‘//’), $content);
$content = str_replace( ‘http:’.strstr($upload_dir[‘baseurl’], ‘//’), ‘https:’.strstr($upload_dir[‘baseurl’], ‘//’), $content);
return $content;
}
ob_start(“fanly_ssl_main”);
}
}
代码二:HTTPS 相对链接替换
//WordPress SSL
add_filter(‘get_header’, ‘fanly_ssl’);
function fanly_ssl(){
if( is_ssl() ){
function fanly_ssl_main ($content){
$siteurl = get_option(‘siteurl’);
$upload_dir = wp_upload_dir();
$content = str_replace( ‘http:’.strstr($siteurl, ‘//’), strstr($siteurl, ‘//’), $content);
$content = str_replace( ‘http:’.strstr($upload_dir[‘baseurl’], ‘//’), strstr($upload_dir[‘baseurl’], ‘//’), $content);
return $content;
}
ob_start(“fanly_ssl_main”);
}
}