张杰部落格
博客信息

DISCUZ 3.4 实现全站所有链接 HTTPS请求不打感叹号

发布时间:『 2019-12-28 16:05』  博客类别:Other  阅读(731) 评论(0)

    网站开启https访问的好处有很多啊。比如搜索引擎会青睐,浏览器,比如火狐,谷歌会出现一个绿色的锁。非https网站谷歌直接会提示不安全。对用户体验来说大打折扣。

    在尝试给discuz网站开通https访问的时候,出现了很多问题。这里大概总结下处理步骤。避免以后出现同样的问题。

    首先,nginx开启https

server{

   listen 443 ssl;
   ssl_certificate /usr/local/nginx/cert/xxx.com.pem;
   ssl_certificate_key /usr/local/nginx/cert/xxx.com.key;
   
   ....
   }

重启nginx后,访问

https://www.xxx.com

发现首页没有加载任何css,样式是乱的。打开firebug一开,原来里面的js,css的访问路径都是http,出现了mixed blocked错误。于是,查找网上的解决方案。解决方案很多,但是并不都一样。我现在汇总一下,彻底解决所有问题。

(1)修改 /source/class/discuz/discuz_application.php

找到

$_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

找到:

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)修改/config/config_ucenter.php

找到:

define('UC_API', 'http://www.xxx.com/uc_server');

改为:

define('UC_API', 'https://www.xxx.com/uc_server');

(4)修改/template/default/common/header.htm

查找: http:// 全部替换为: https://

(5)UCenter 后台 > 应用管理 > 应用的主 URL,改为HTTPS

(6)查找一些图片,例如版本的图标,如果是以前直接用http开头的地址的,需要在数据库中修改。

(7)后台界面-风格管理,点击更新 CSS 缓存,更新缓存,完成!


到此,彻底解决discuz 设置https访问的问题。

关键字:   discuz     https  
评论信息
暂无评论
发表评论
验证码: 
Powered by IMZHANGJIE.CN Copyright © 2015-2022 粤ICP备14056181号