今天我兴高采烈的申请完startssl的免费ssl证书后,就想部署到freeshell上,将证书和私钥都上载好了后,通过https访问博客发现大量的css,js都是http格式的,导致浏览器自动禁用了不安全的脚本,使网站看起来一团糟。我赶紧在wordpress控制台中将网站地址改成了https开头的,结果不仅仍然一团糟,还导致wp-admin管理控制台无限重定向了。

接着,我在qq上咨询了boj,得知freeshell前端采用nginx进行反向代理,使用服务器头x-scheme向后端传递所使用的协议。我猜测是这样的:

user--https--nginx--http--apache

结果wordpress认为当前使用的协议是http,又因为将站点地址设置为了https,导致登陆时wordpress无限重定向到https,且用https访问时所用资源使用http加载。 所以只要让wordpress认为是通过https访问的即可。

设置方法如下,在apache的配置文件中加入下面的内容:

SetEnvIf X-Scheme "^https$" HTTPS=on

意思就是如果x-scheme满足https开头就将服务器变量https设为on,这样wordpress在检测变量$_SERVER[“https”]时得到的结果就是on,就能正常显示了。