找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz!X3.2 Https修改方案之一

修改前提环境支持SSL和Https,端口433访问,具体方法可以问度娘.

一、程序修改(适用Nginx)
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,架构问题nginx+php-fpm,无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。

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. $_G['isHTTPS'] = $this->_is_https();
复制代码

文件最下面添加:
  1. }

  2. ?>
复制代码
前添加
  1. private function _is_https() {
  2.                 if(isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') {
  3.                         return true;
  4.                 }
  5.                 if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
  6.                         return true;
  7.                 }
  8.                 if(isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && strtolower($_SERVER['HTTP_X_CLIENT_SCHEME']) == 'https') {
  9.                         return true;
  10.                 }
  11.                 if(isset($_SERVER['HTTP_FROM_HTTPS']) && strtolower($_SERVER['HTTP_FROM_HTTPS']) != 'off') {
  12.                         return true;
  13.                 }
  14.                 if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) {
  15.                         return true;
  16.                 }
  17.                 return false;
  18.         }
复制代码

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'], '/'))));
复制代码
修改过后,更新缓存,发现大多数链接都变成了https。

2.2、后台设置

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

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

UCenter后台 > 应用管理 > 应用的主URL,修改为https开头

另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。

3、清理缓存

设置完成之后,需要清理缓存,使设置生效。


二、JS和CSS本地化
1.https访问时出现http调用外部链接的均提示有不安全脚本。此时我们应当找到调用了哪些外部的http链接的JS或CSS
2.利用浏览器开发者工具F12查看找到了如下外部调用的文件

  1. http://pc1.gtimg.com/js/jquery-1.4.4.min.js

  2. http://s.pc.qq.com/discuz/css/style.css

  3. http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1

  4. https://openapi.guanjia.qq.com/fcgi-bin/getdzjs?cmd=urlquery_gbk_zh_cn   无效链接
复制代码



3.电脑管家网址保镖插件,修改
\source\plugin\pcmgr_url_safeguard\pcmgr_url_safeguard.class.php下的:

  1. // $jsscript .= '<link rel="stylesheet" type="text/css" href="http://s.pc.qq.com/discuz/css/style.css" />';
复制代码


为你的:

  1. // $jsscript .= '<link rel="stylesheet" type="text/css" href="https://你的论坛地址/discuz/css/style.css" />';
复制代码


(注意:修改后的地址你要保证你下载该外部CSS到你的网站目录,同时把style.css文件里调用的外部图片更换成本地图片路径)。

4.漫游应用,注释掉即可
找到/source/function/function_core.php


  1. $tipsService = Cloud::loadClass('Service_DiscuzTips');
  2.         $tipsService->show();
复制代码


把它注释掉,如下:

  1. /**
  2. *                $tipsService = Cloud::loadClass('Service_DiscuzTips');
  3. *                $tipsService->show();
  4. */
复制代码



5.JS容错。为了正常使用https我们得写个JS容错命令。在后台-全局-Seo设置-其他 加入以下代码:

  1. <script type="text/javascript">
  2. function SlyarErrors() {
  3. return true;
  4. }
  5. window.onerror = SlyarErrors;
  6. </script>
复制代码


6.其他
游客,如果您要查看本帖隐藏内容请回复



本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://www.xmspace.net/thread-415-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225

发表于 2016-2-22 01:58:25 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • fastadmin 后台界面使用字段数组类型
    • Discuz!x3.5 修改标题高亮颜色
    • Discuz!x3.5 应用中心 下载应用一直下载中
    • 帖子定时显示
    • 论坛辅助审核
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表