售前咨询
技术支持
渠道合作

【站长必备】快速申请SSL证书,WordPress全站开启HTTPS

随着HTTP明文协议的弊端不断浮现,以及互联网推出的多项的政策,HTTPS正逐步取代HTTP,成为主流的传输协议。同时SSL证书也成为了网站设置HTTPS的最常见的解决方法,但在部署SSL证书的过程中,很多网络用户都会遇到不同的问题,无法完全正确的部署SSL证书,下面是数安时代(GDCA)为使用WordPress的用户整理的相关教程:

方法一:传统方式将 WordPress 开启整站 HTTPS 协议

1.修改wordpress后台配置中的地址改为https版本

技术分享

通过上面的设置,绝大部分导航中的链接就由wordpress系统自动改为HTTPS版本。

2、对于正文中的内部链接需要手工修改,修改的方法有两种:

1)直接在数据库中更新,更新的sql如下:

update wp_posts set post_content = replace(post_content, ‘//www.watch-life.net/’,‘https://www.watch-life.net/’)

对于数据库不熟悉的站长不推荐这种方法,对数据库错误的更新对网站可能是毁灭性的打击,建议更新前最好备份数据库。

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”);

}

}

以上就为大家提供了两种实现的方式,方法一主要是通过直接修改 WordPress 的配置以及将之前的 http 协议直接通过数据库执行替换命令修改为 https 协议,这样算是一个一劳永逸的方式,同样网站以后也将必须使用 https 协议才能访问,如果哪天服务器关闭了 SSL 证书,那么很遗憾的告诉你,你还需要使用方法一中的方式反过来操作,如果你非常确定网站以后都会使用 https 协议,那么推荐使用方法一。

开启登录和后台的强制 SSL

虽然有了整站的重定向,但我们不妨还是将 WordPress 本身自带的功能打开,以期更完善的兼容体验——毕竟是301重定向。

还是找到你网站根目录里边,这次要修改的文件是 config.php,直接在这个文件的末尾另起一行,追加两行代码:

/* 强制后台和登录使用 SSL */

define(‘FORCE_SSL_LOGIN’, true);

define(‘FORCE_SSL_ADMIN’, true);

站内链接支持

很多网站都会遇到这种问题,已经全部正确完成了SSL证书的部署,但在浏览器访问时,HTTPS标识已正确显示,但绿色安全锁变成了灰色的叹号。这让众多的用户感到费解。

这最主要的可能就是图片的问题了,因为上传到空间的附件都被 WordPress 标记为了绝对链接,而且全都写入了 “http://”。一般来讲,是需要用数据库替换的,不过这种方法有点小危险,这里给大家推荐一种方法:使用代码让 WordPress 在加载附件之前将链接替换就好了!

找到当前主题下的 function.php 文件,编辑,在里边代码的末尾追加如下代码:

/* 替换图片链接为 https */

function my_content_manipulator($content){

if( is_ssl() ){

$content = str_replace(‘http://www.logcg.com/wp-content/uploads’, ‘https://www.logcg.com/wp-content/uploads’, $content);

}

return $content;

}

add_filter(‘the_content’, ‘my_content_manipulator’);

另外,除了这个大头意外,还需要关心站内的各种内链:

修改“菜单”当中的所有“自定义链接”为相对路径;

修改“设置”→“常规”里的“站点地址”和“WordPress 地址”为 HTTPS;

整站301跳转

整站如果启用HTTPS后运行正常,就可以开始考虑进行整站301跳转了。如果是Apache服务器,在.htaccess文件添加如下代码:

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://www.watch-life.net/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^watch-life.net [NC]

RewriteRule ^(.*)$ https://www.watch-life.net/$1 [L,R=301]

如果是Nginx服务器,在nginx.conf配置如下代码:

server {

listen 80 default_server;

server_name www.watch-life.net;

return 301 https://$server_name$request_uri;

}

以上代码,更换相应的域名即可使用。注意修改或增加配置代码后,需要重启web 服务器。重启后,访问原来HTTP的版本,看是否301跳转为HTTPS的版本。

自此,WordPress整站开启HTTPS开启工作全部完成。

如果WordPress用户想了解更多的SSL证书或者HTTPS的资讯,请关注数安时代(GDCA)。

上一篇:

下一篇:

相关文章