润芒论坛

 找回密码
 立即注册
查看: 287|回复: 0

Discuz X3.* 全站开启 SSL / HTTPS 显示绿锁全攻略

[复制链接]

4万

主题

4万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
44173
发表于 2022-7-13 14:24:35 | 显示全部楼层 |阅读模式
一、全站资源 https 化。
1、UCenter地址、本地附件 URL 地址、风格图片地址需全部开启https访问,否则浏览器会出现类似“网站内存在不安全的资源”的警告。如果这部分链接全部是相对链接,则请忽略本项。
若“风格管理”中将“界面基础图片目录 {IMGDIR}”和“扩展图片目录 {STYLEIMGDIR}” 地址设置为 https 开头的绝对链接,需要修复一处BUG,否则会导致这部分风格图片无法显示。
打开 source/function/cache/cache_styles.php ,查找以下三项:
  • $cssdata = !preg_match('/^http:\/\//i', $data['styleimgdir'])
  • $cssdata = !preg_match('/^http:\/\//i', $data['imgdir'])
  • $cssdata = !preg_match('/^http:\/\//i', $data['staticurl'])

[color=rgb(51, 102, 153) !important]复制代码

将其中的 /^http:\/\//i 替换为 /^http/i ,保存覆盖。
注意:修改后,若将来要使用相对链接,需要确保目录不以 http 开头。
2、修正楼层点评中的头像链接。点评头像链接会直接缓存于 pre_forum_postcache 表中,我们可以在输出时对 http:// 进行替换。
打开模板 viewthread_node_body.htm ,查找 $comment[avatar] 替换为:
  • {eval echo str_replace("http://","https://",$comment[avatar]);}

[color=rgb(51, 102, 153) !important]复制代码

3、解决 DiscuzTips 造成的不安全资源提示。
打开 source/plugin/manyou/Service/DiscuzTips.php ,在 echo $jsCode; 前加 // 将其注释掉。
4、百度结构化插件暂不支持 https ,将造成浏览器提示存在不安全资源。暂停使用该插件。
5、清理用户签名位中的 http:// 图片,清理帖子中存在的外链图片。
6、使用浏览器的开发者工具逐一排查是否存在其他 http:// 资源(包括图片、JS、CSS的,A链接无影响)。

二、解决QQ互联登录问题
截至2015年12月,Discuz的QQ互联仍不支持 https 站点,我们可以进行以下操作,将QQ互联链接调整为 http:// ,QQ互联登录跳转回 http:// 后再在站点内部301到 https:// 页面。
1、考虑到防止屏蔽等因素,建议启用一个独立域名,并在论坛所在服务器新建一个该域名的站点,站点目录中使用软链接链接论坛的以下目录:api config data source static 和以下文件:admin.php api.php connect.php ,即相当于对论坛做一个镜像但仅限于QQ互联相关文件。
2、打开 source/plugin/qqconnect/connect.class.php 文件,将 40-46 行中的:
  • $_G['siteurl'].'

[color=rgb(51, 102, 153) !important]复制代码

替换为:
  • 'http://上面创建的专用网址/

[color=rgb(51, 102, 153) !important]复制代码

3、打开 connect.php 文件,在 $discuz->init(); 后面加入:
  • if($_SERVER['HTTP_HOST'] != preg_replace("/http(s)?:\/\/(.*?)(\/*)$/", "\\2", $_G['setting'][siteurl])) {
  •         header('HTTP/1.1 301 Moved Permanently');
  •         header('Location: '.preg_replace("/(.*?)(\/*)$/", "\\1", $_G['setting'][siteurl]).$_SERVER['REQUEST_URI']);
  •         exit;
  • }

[color=rgb(51, 102, 153) !important]复制代码

注意:后台设置中网站URL地址一定要是你的HTTPS主网址。

三、解决后台应用中心无法访问的问题
在第2步基础上,访问第2步中专用域名下的 admin.php 登录后台即可正常进入应用中心。

四、禁止在第2步专用域名下更新缓存(否则前台部分图标地址会使用该域名)。
打开 source/admincp/admincp_tools.php 文件,查找:
  • showtips('tools_updatecache_tips');
  •         if($step == 1) {
  •                 cpmsg("<input type="checkbox" name="type[]" value="data" id="datacache" class="checkbox" checked /><label for="datacache">".$lang[tools_updatecache_data]."</label><input type="checkbox" name="type[]" value="tpl" id="tplcache" class="checkbox" checked /><label for="tplcache">".$lang[tools_updatecache_tpl]."</label><input type="checkbox" name="type[]" value="blockclass" id="blockclasscache" class="checkbox" /><label for="blockclasscache">".$lang[tools_updatecache_blockclass].'</label>', 'action=tools&operation=updatecache&step=2', 'form', '', FALSE);

[color=rgb(51, 102, 153) !important]复制代码

替换为:
  • showtips('tools_updatecache_tips');
  •         echo '<br>';
  •         if($step == 1) {
  •                 if($_G['siteurl'] == $_G['setting'][siteurl]) {
  •                         cpmsg("<input type="checkbox" name="type[]" value="data" id="datacache" class="checkbox" checked /><label for="datacache">".$lang[tools_updatecache_data]."</label><input type="checkbox" name="type[]" value="tpl" id="tplcache" class="checkbox" checked /><label for="tplcache">".$lang[tools_updatecache_tpl]."</label><input type="checkbox" name="type[]" value="blockclass" id="blockclasscache" class="checkbox" /><label for="blockclasscache">".$lang[tools_updatecache_blockclass].'</label>', 'action=tools&operation=updatecache&step=2', 'form', '', FALSE);
  •                 } else {
  •                         cpmsg('请切换到主域名下更新缓存', '', 'succeed', '', FALSE);
  •                 }

[color=rgb(51, 102, 153) !important]复制代码


五、http:// 跳转至 https://
打开 source/class/class_core.php 文件,在
  • set_exception_handler(array('core', 'handleException'));

[color=rgb(51, 102, 153) !important]复制代码

后面加入:
  • if($_SERVER['SERVER_PORT'] != '443' && $_SERVER['PHP_SELF'] != '/api/uc.php') {
  •         if(!preg_match("/(Zidingyi|Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla)/i", $_SERVER['HTTP_USER_AGENT'])) {
  •                 header('HTTP/1.1 301 Moved Permanently');
  •                 header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  •                 exit;
  •         } elseif(preg_match("/(Baidu|Google)/i", $_SERVER['HTTP_USER_AGENT'])) {
  •                 header('HTTP/1.1 403 Forbidden');
  •                 exit;
  •         }
  • }

[color=rgb(51, 102, 153) !important]复制代码

说明:当访问端口不为443(即https)时,如果不是搜索引擎则跳转到https页面,否则如果是百度或Google蜘蛛(这两个搜索引擎已支持收录https)则返回403禁止访问,避免重复收录 http 和 https 或优先收录了 http ,其它搜索引擎未定义,正常返回 http 页面(其它搜索引擎可能不支持收录 https ,因此开放 http 给他们)。
以上代码中“Zidingyi”可以任意修改,管理员使用以下UA可以不跳转到https,便于对http版进行调测:
Mozilla/5.0 (compatible; Zidingyi/2015; +http://www.xxx.com)
润芒论坛所有资源均免费下载,回复帖子即出现下载地址!站长QQ:36742300
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长QQ:36742300|传奇版本|传奇服务端|传奇一条龙|鲁ICP备16008334号|润芒论坛 鲁公网安备37083002370860

GMT+8, 2024-4-25 09:03 , Processed in 1.187500 second(s), 19 queries .

Powered by GM基地 X3.4

© 免责声明:本站所有资源均来至网络,仅供学习交流,严禁用于商业用途,请于24小时内删除!

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