【转】discuz X2.5全站开启https教程

因为论坛是建在主域名的文件夹下,主网站开启全站https后,导致论坛首页排版错乱,开始以为是数据库问题,排查后排除了数据库问题。F12进入开发者模式,查看Console才发现css样式文件被浏览器禁止加载了。再看css文件的链接地址,都是以http形式开头的。原来是css样式默认加载了http模式下的缓存样式。

解决方法

如果可以正常访问论坛后台的话,进入discuz后台,点工具-更新网站缓存,按照步骤操作即可。如果是服务器可在nginx配置文件中将http请求强制301跳转到https。如果是虚拟主机,可以按照下面的方法:

一、修改discuz_application.php文件开启https访问支持

找到source\class\discuz\discuz_application.php文件

找到如下代码(第178行):

$_G[‘siteurl’] = dhtmlspecialchars(‘http://’.$_SERVER[‘HTTP_HOST’].$sitepath.’/’);

将其中的http(小写的)改成https

二、修改misc.php文件,确保UCenter通信成功

找到uc_server\model目录下的misc.php文件,

找到69行(如下图),插入下面代码:

if(substr($url,0,5)=='https'){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($post){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if($cookie){
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
return curl_exec($ch);
}

三、除去非 HTTPS 内容避免提示”不安全内容“

api/manyou/Service/DiscuzTips.php ,最后的那段 JS 加载脚本删除就行。
非楼主层如果有点评,那么点评者头像不是 HTTPS 开头,也需要修改一个文件来适配: template/default/forum/viewthread_node_body.htm (约 180 行),搜索 div class=”psta vm”>,将下面一行注释掉或者删除。(我在这个文件中并没有找到<div class=”psta vm”>相关的代码,可能是其他样式)
打开浏览器,使用开发者工具或者查看源码逐一排查加载的非 HTTPS 资源并修改。

四、后台设置的修改完善

在后台还有一些设置,可能会干扰 https 的使用。

后台 >全局 > 站点 URL ,改为 https 开头的

后台 > 站长 > UCenter 设置 > UCenter 访问地址,修改为 https 开头的

UCenter 后台 > 应用管理 > 应用的主 URL ,修改为 https 开头。
修改后可能会显示通讯失败,如果 UC 和论坛程序安装在同一机器,此失败可无视,实测可以和 UC 正常通讯不影响(测试是否正常通讯程序的 Bug ),如果 UC 和论坛程序不在一台机器上,有可能不能通讯。 另外在 后台 > 全局 > 域名设置 中的一些设置也可能使 https 失效,如果更新缓存后论坛默认连接还是 HTTP ,请删除 后台 > 全局 > 域名设置 > 应用域名 > 默认 里面的默认域名(一般去 forum.php 尾巴这里会有内容,为了 HTTPS 请删除)。

到此为止,discuz X2.5的https改造已经基本完成。

转自葱子博客,其他版本的解决方法可以去葱子博客查看~

来源:文章部分内容来自网络,由智能家居指南网整理发布,侵删!

发表评论