日历存档: 2017 年 2 月 16 日

博客开启强制HTTPS访问

分类:折腾日期:2017-02-16 - 23:04:41评论:11条作者:老谢

  自为博客安装SSL证书以后,老谢博客一直是支持HTTPS协议访问的,但是并没有强制跳转HTTPS,最近Let’s Encrypt的免费SSL证书流行开来,老薛主机的cPanel控制面板也已经支持了一键安装SSL证书启用HTTPS访问,身边的朋友也越来也多使用HTTPS访问,老谢也按耐不住启用强制HTTPS访问。

# 又拍云启用HTTPS

  老谢博客使用又拍云作为外链资源好几年了,要启用全站HTTPS,外链资源必须也要使用HTTPS协议,登录又拍云的后台,在“工具箱” – “SSL证书服务”里面可以自定申请Let’s Encrypt的免费SSL证书,该证书是受Chrome和Firefox等主流浏览器信任的,免费3个月,又拍云支持自动续期的功能。

  申请证书速度很快,我在操作的时候只用了十来分钟就完成了,另外要注意的是需要在又拍云的HTTPS设置里面选择启用HTTPS访问以及强制SSL的选项。

# 修改站点地址、资源地址以及修改文章内链接

  首先在wp后台的设置里面,修改站点地址为HTTPS的地址,然后把站内的静态资源如CSS、JS以及小图标等链接修改为HTTPS,确保无非HTTPS的资源载入。

  最后修改站内的图片资源地址,老谢博客一直使用又拍云的外链资源,地址为http://upyun.xj123.info/,这里只需要修改为https://upyun.xj123.info/即可,可以使用SQL语句完成:

UPDATE wp_posts SET post_content = REPLACE( post_content, 'http://www.old.com', 'http://www.new.com' ) ;

  最最后也可以在wp-config.php添加下面参数启用wp后台强制HTTPS访问:

/* 强制后台和登录使用 SSL */
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
# Nginx重定向到https

  在server字段添加下面的语句即可:

                if ( $scheme = http ){
                    return 301 https://$server_name$request_uri;
                }