藏宝游传奇

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 228|回复: 2

[其它工具] discuz论坛开启https的教程

[复制链接]
  • TA的每日心情
    开心
    2020-12-29 20:57
  • 签到天数: 3 天

    [LV.2]圆转纯熟

    4332

    主题

    4336

    帖子

    24万

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    247476
    发表于 2020-4-2 13:03:10 | 显示全部楼层 |阅读模式
    discuz X3.2在系统上是支持https的,不过需要手动修改几个地方。首先确保服务器端已开启https,且正确配置了SSL证书。

    discuz X3.2开启支持https主要需要修改一下几个地方:

    1、查找修改文件discuz_application.php :
    source/class/discuz/discuz_application.php (约第 187 行处): 查找:
    1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
    复制代码
    修改为:
    1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
    复制代码
    2、查找修改文件avatar.php :
    uc_server/avatar.php (约第 13 行处)查找:
    1. define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
    复制代码
    修改为:
    1. 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、数据库的调整
    在论坛这种交互社区中,经常回复发帖时会有出现主域名的链接,在没有 HTTPS 之前,链接都是 HTTP 开头,这个时候,我们需要修改数据库,运行下面的 mysql 命令更新数据库,将 HTTP 替换为 HTTPS :
    进入 DZ 后台:站长 – 数据库 – 升级
    1. UPDATE pre_forum_post SET message=REPLACE(message,'http://你的网址','https://你的网址');
    复制代码

    需要注意的是,出于安全考虑, Discuz 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,如果想自己随意书写 SQL 升级语句,需要将程序文件 config/config_global.php 当中的$_config[admincp][runquery] 设置修改为 1 。

    到此,discuz X3.2已经开启支持https了 。

    当然,你还需要申请SSL证书、在服务器端部署SSL证书。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-30 23:01
  • 签到天数: 5 天

    [LV.2]圆转纯熟

    0

    主题

    258

    帖子

    258

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    258
    发表于 2020-8-30 22:42:19 | 显示全部楼层
    果断回帖,如果沉了就是我弄沉的很有成就感www.cbvy.com
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2020-10-23 10:58
  • 签到天数: 16 天

    [LV.4]渐入佳境

    0

    主题

    182

    帖子

    237

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    237
    发表于 2020-9-17 13:40:57 | 显示全部楼层
    楼主,不论什么情况你一定要hold住!hold住就是胜利!www.cbvy.com
    回复 支持 反对

    使用道具 举报

    Archiver|手机版|小黑屋|藏宝游

    GMT+8, 2021-5-14 12:46 , Processed in 0.055853 second(s), 23 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表