HTTPS大势所趋,我的小博客之前曾经开启过,不过嫌麻烦,后来就取消了。
这次花了些时间,全站切换到SSL。
之前考虑使用插件全站http替换成https输出,但是感觉速度上不是很快,且比较消耗资源,故直接通过全站链接都替换成https。且对站内二级域名处理的似乎有些问题。
由于需要对数据库做改动,请注意备份好数据库。如果使用缓存插件,需重新生成缓存。
1.准备证书。
这个就不用说了,不管是付费,还是免费的SSL证书,各大云平台几乎都能申请。
2.导入证书,不同系统/web服务器设置方法大同小异,可以搜索下。
4.全站替换链接,http替换成https。
我使用phpmyadmin,也可以其他MySQL管理软件。主要替换如下字段
update wp_posts set post_content = replace(post_content,'http://blog.ich8.com/','https://blog.ich8.com/');
update wp_posts set guid = replace(guid,'http://blog.ich8.com/','https://blog.ich8.com/');
update wp_options set option_value = replace(option_value,'http://blog.ich8.com/','https://blog.ich8.com/');
update wp_comments set comment_author_url = replace(comment_author_url,'http://blog.ich8.com','https://blog.ich8.com');
update wp_comments set comment_content = replace(comment_content,'http://blog.ich8.com','https://blog.ich8.com');
另其他表也建议搜索下,有http字段的全替换成https。
5.全站URL重定向。
①全站HTTP协议301重定向到HTTPS
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
②发现wp-content文件夹无法http替换成https。使用如下URL重写规则
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{SERVER_PORT} !^443$ ##如果使用其他端口,也可以使用这个规则,除了443以外的端口全部重定向。
高级用法 (可选)
RewriteEngine on
# 强制HTTPS
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_secure [OR]
RewriteCond %{REQUEST_URI} ^something_else_secure
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# 强制HTTP
RewriteCond %{HTTPS} =on [OR]
RewriteCond %{SERVER_PORT} 443
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_public [OR]
RewriteCond %{REQUEST_URI} ^something_else_public
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
参考资料:https://blog.csdn.net/ithomer/article/details/78986266
6.一些插件类更改,比如WP Super Cache重新生成缓存。
需注意 WP Super Cache 的 预缓存 ,php的执行时间需改长。如果出现超时,则会一直卡在生成状态。这个问题处理了好久。无论是否重装插件。后来发现把WPSC删除,插件里边php文件彻底删除,过1小时重装,就会重新有个生成的时间,点击 取消 预缓存,然后修改好php活动时间(起码半小时以上,700+文章),就可以了。
[分享]WordPress全站升级SSL:等您坐沙发呢!