There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】wordpress升级https ssl的那些坑

wordpress 百蔬君 5013℃ 已收录 0评论

这几天有点时间,想着升级百蔬君博客到https,结果还遇到不少问题,记录一下。

目前,国内的百度云提供免费的ssl证书,有效期1年,需要域名备案,有兴趣的朋友可以直接去申请,申请地址为https://cloud.baidu.com/,一个地址可以申请3个免费 Symantec 域名型DV 证书。

首先下载证书,对于apache,有三个文件:baishujun.com.cer,baishujun.com.key和baishujun.com_ca.crt,我也不知道哪个文件是apache的 bundle文件,但是我猜测这个ca是chain的意思,所以就把 baishujun.com_ca.crt 当作 bundle文件 ,结果也ok。

坑1:安装好之后首先要后台修改网站的 siteurl 和 home 为https,这样网站才能以https访问,结果打开首页乱码,查看源代码发现这个是css及js文件的加载还是http协议。追查发现是由于我所使用的这个主题是使用get_template_directory_uri() '/style.css'get_stylesheet_directory_uri().'/js/my_quicktags.js' 这类函数来加载css及js文件。结果追查到了\wp-includes\load.php的is_ssl函数,这里总是返回为false,后面想起来由于环境采用了代理,php无法识别当前https环境 ,没办法,只能也强制ssl。

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

最开始为了不影响升级,我把上面的代码放在主题文件的functions.php文件中,这样前台的访问倒是正常了,但是访问后台,发现出现“抱歉,您不能编辑此项目”或者“ 抱歉,您不能访问此页面 ”错误。

 

 

正确做法是把这个代码放到wp-config.php文件中,一般升级的话,这个文件也不会覆盖,至此,is_ssl()函数总算正常工作了。

坑2:打开页面,发现百度分享失效,追查发现百度远程分享代码也不支持https,没办法,只能本地化。把百度分享资源文件传到网站根目录,然后修改百度分享地址 http://bdimg.share.baidu.com 为本地域名。

下载百度分享本地资源文件

坑3:打开页面,发现页面中的图片仍然是http协议。这时候除了直接数据库批量替换操作外,还可以借助Velvet Blues Update URLs插件。

把http://www.baishujun.com批量替换为https://www.baishujun.com

另外wordpress 5.0版以后新增的这个Gutenberg(古腾堡)编辑器,我是不怎么喜欢,还是使用旧的来的舒心,在主题的functions.php中添加add_filter

//关闭古腾堡编辑器
add_filter('use_block_editor_for_post', '__return_false');

写出来之后好像挺简单,如果从头摸索,还是要花很多时间滴,写出来分享给有需要的朋友吧。

转载请注明:百蔬君 » 【原创文章】wordpress升级https ssl的那些坑

喜欢 (1)or分享 (0)
发表我的评论
取消评论

请证明您不是机器人(^v^):

表情