修改前提环境支持SSL和Https,端口433访问,具体方法可以问度娘.
一、程序修改(适用Nginx)
Discuz采用 $_SERVER[‘HTTPS’] 的方式来判断SSL,架构问题nginx+php-fpm,无法采用这种方式识别,所以需要对Discuz程序进行一些调整(使用 $_SERVER[‘SERVER_PORT’] 来判断)。
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;
- $_G['isHTTPS'] = $this->_is_https();
复制代码
文件最下面添加:
前添加
- private function _is_https() {
- if(isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') {
- return true;
- }
- if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
- return true;
- }
- if(isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && strtolower($_SERVER['HTTP_X_CLIENT_SCHEME']) == 'https') {
- return true;
- }
- if(isset($_SERVER['HTTP_FROM_HTTPS']) && strtolower($_SERVER['HTTP_FROM_HTTPS']) != 'off') {
- return true;
- }
- if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) {
- return true;
- }
- return false;
- }
复制代码
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'], '/'))));
复制代码 修改过后,更新缓存,发现大多数链接都变成了https。
2.2、后台设置
在后台还有一些设置,可能会干扰https的使用
后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。
3、清理缓存
设置完成之后,需要清理缓存,使设置生效。
二、JS和CSS本地化
1.https访问时出现http调用外部链接的均提示有不安全脚本。此时我们应当找到调用了哪些外部的http链接的JS或CSS
2.利用浏览器开发者工具F12查看找到了如下外部调用的文件
- http://pc1.gtimg.com/js/jquery-1.4.4.min.js
- http://s.pc.qq.com/discuz/css/style.css
- http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1
- https://openapi.guanjia.qq.com/fcgi-bin/getdzjs?cmd=urlquery_gbk_zh_cn 无效链接
复制代码
3.电脑管家网址保镖插件,修改
\source\plugin\pcmgr_url_safeguard\pcmgr_url_safeguard.class.php下的:
- // $jsscript .= '<link rel="stylesheet" type="text/css" href="http://s.pc.qq.com/discuz/css/style.css" />';
复制代码
为你的:
- // $jsscript .= '<link rel="stylesheet" type="text/css" href="https://你的论坛地址/discuz/css/style.css" />';
复制代码
(注意:修改后的地址你要保证你下载该外部CSS到你的网站目录,同时把style.css文件里调用的外部图片更换成本地图片路径)。
4.漫游应用,注释掉即可
找到/source/function/function_core.php
- $tipsService = Cloud::loadClass('Service_DiscuzTips');
- $tipsService->show();
复制代码
把它注释掉,如下:
- /**
- * $tipsService = Cloud::loadClass('Service_DiscuzTips');
- * $tipsService->show();
- */
复制代码
5.JS容错。为了正常使用https我们得写个JS容错命令。在后台-全局-Seo设置-其他 加入以下代码:
- <script type="text/javascript">
- function SlyarErrors() {
- return true;
- }
- window.onerror = SlyarErrors;
- </script>
复制代码
6.其他
|