| 一、Discuz x3.2开启支持https访问 1.(适用于nginx+pfm环境)source/class/discuz/discuz_application.php (约第 187 行处) 查找: $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false; 修改为: $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false; 2.uc_server/avatar.php (约第 13 行处)查找: define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')))); 修改为: define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')))); 3.除去非 HTTPS 内容避免提示“不安全内容”: Source/plugin/manyou/Service/DiscuzTips.php ,最后的那段 JS 加载脚本删除就行。 (适用于带论坛)非楼主层如果有点评,那么点评者头像不是 HTTPS 开头,也需要修改一个文件来适配: template/default/forum/viewthread_node_body.htm (约 180 行),搜索 div class="psta vm">,将下面一行注释掉或者删除。 打开浏览器,使用开发者工具或者查看源码逐一排查加载的非 HTTPS 资源并修改。 4.后台设置的修改完善: 在后台还有一些设置,可能会干扰 https 的使用。 后台 >全局 > 站点 URL ,改为 https 开头的; 后台 > 站长 > UCenter 设置 > UCenter 访问地址,修改为 https 开头的; UCenter 后台 > 应用管理 > 应用的主 URL ,修改为 https 开头。 修改后可能会显示通讯失败,如果 UC 和论坛程序安装在同一机器,此失败可无视,实测可以和 UC 正常通讯不影响(测试是否正常通讯程序的 Bug ),如果 UC 和论坛程序不在一台机器上,有可能不能通讯。 另外在 后台 > 全局 > 域名设置 中的一些设置也可能使 https 失效,如果更新缓存后论坛默认连接还是 HTTP ,请删除 后台 > 全局 > 域名设置 > 应用域名 > 默认 里面的默认域名(一般去 forum.php 尾巴这里会有内容,为了 HTTPS 请删除)。 5.模板的调整: 主要在模板的 foot.html 以及 header.html 等文件中,使用工具逐一排查模板文件中写死的 HTTP 链接,修改为 HTTPS 。 6.解决QQ互联的问题: 首先升级QQ互联插件,最低版本要求是 1.18.2,如果升级后依然不行,需要修改回调 URL 为非 HTTPS 的: 找到: source/plugin/qqconnect/connect.class.php 大约41行 在common_base() 函数里面,将 $_G[‘siteurl’] 直接硬编码为 你的http的URL ,首先修改callback_url,如果不行,将所有包含connect.php 的 URL 全部替换。 7.将论坛帖子中网站的URL改成https格式: 会员在发帖的过程中,很可能调用了本站别处的帖子或连接,而这个链接肯定是http的,所以需要将这些链接全部修改成https格式的: 执行SQL语句,可以在DZ后台,或者phpmyadmin中都可以: UPDATE pre_forum_post SET message=REPLACE(message,’http://旧网址.com’,’https://新网址.com’); 8.修改模版各处http://为https:// 这里为模版文件较多的用户提供一个简单的批量的https://模版替换教程(开启伪静态的可用) 打开source/function/function_core.php 搜索 $content = output_replace($content); 在下面加入 $content = str_replace('http://www.xxx.com','https://www.xxx.com',$content); 如果你有多个二级域名,可以加入 $content = preg_replace('http://(.*?)xxx.com','https://xxx.com',$content); 二、Discuz网站实现绿标以及去掉不安全脚本 1.有一个很坑的就是我的全局—域名设置—应用域名,这里填写了以前的域名,现在域名是https了,所有用这个就不行了,所以导致页面一直有重定向的问题,解决方法应用域名留空。 2.网站现在可以访问还是灰色的https,这其中就是有http的图片、CSS、JS等问题,外链是没有关系的,所以需要一一排查。 (本文内容来自互联网) |
Copyright © 2002-2024 Iszw.net All Rights Reserved. 川公网安备 51010702002244号
蜀ICP备2020035322号-1 本站已开启 IPv6 访问