wordpress全站开启https

第一步:购买或者使用免费的SSL证书

免费的很多,比如沃通免费SSL申请地址:https://freessl.wosign.com 、还有一个重点提一下:Let’s Encrypt (开源项目)

一种是自动的,还有一种是国外的通过使用OPENSSL手动创建证书 下面说说具体步骤

生成命令:

openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr  

生成之后,csr文件内容copy给这些CA机构,自动给你一个crt。配合你刚刚生成的key,ok,完美。

拿到crt和key之后,我们开始在Nginx配置https

# HTTP Server
server {  
listen 80;  
server_name www.kejianet.com kejianet.com;  
rewrite ^ https://$server_name$request_uri permanent;  
}

server {

listen 443 ssl http2;

ssl_certificate /usr/local/nginx/conf/vhost/ssl/kejianet.com.crt;  
ssl_certificate_key /usr/local/nginx/conf/vhost/ssl/kejianet.com.key;  
ssl_ciphers "CHACHA20:GCM:HIGH:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS";  
ssl_session_cache shared:SSL:10m;  
ssl_session_timeout 10m;  
#ssl_stapling on;
#ssl_stapling_verify on;
#resolver 8.8.8.8 8.8.4.4 valid=300s;
#resolver_timeout 5s;

如上,我们80端口的http全部301重定向到https。这样就不会对SEO产生什么不利的影响,百度站长明确说明:http网站和https当作同

一个站来处理,所以可以看到改版规则无https和http的区别,直接301完事!

第二步:把原网站http引用的图片和静态资源改成https

方法1:通过修改SQL即可。

方法2:通过找到当前主题下的 function.php 文件

function replacehttp($content){  
if( is_ssl() ){  
$content = str_replace('http://www.kejianet.com/inc/uploads', 'https://www.kejianet.com/inc/uploads', $content);
}
return $content;  
}
add_filter('the_content', 'replacehttp');  

注意:引用的CSS文件中也要一并修改。

第三步:wordpress后台改成https访问

wp-config.php文件中添加

define('FORCE_SSL_ADMIN', true);  
define('FORCE_SSL_LOGIN', true);  

基本上就可以了。