wordpress全站开启https,真的天下文章一大抄,抄来抄去最后都不知道谁是原创,有些人连错误的都抄!无语了。
下面我们主要说下,http向https迁移的整个过程。也许你也会在谷歌里搜索 Nginx https、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 文件
/* 替换图片链接为 https */
function replacehttp($content){
if( is_ssl() ){
$content = str_replace('http://www.kejianet.com/wp-content/uploads', 'https://www.kejianet.com/wp-content/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);
基本上就可以了。详细过程可以看:www.kejianet.com 企业服务平台的具体实施过程