登录站点

用户名

密码

Discuz论坛设置https后,因为部分css中的图片地址还是http导致

已有 666 次阅读  2019-05-16 01:18

一、全站资源 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'])

将其中的 /^http:\/\//i 替换为 /^http/i ,保存覆盖。

注意:修改后,若将来要使用相对链接,需要确保目录不以 http 开头。

2、修正楼层点评中的头像链接。点评头像链接会直接缓存于 pre_forum_postcache 表中,我们可以在输出时对 http:// 进行替换。

打开模板 viewthread_node_body.htm ,查找 $comment[avatar] 替换为:

{eval echo str_replace("http://","https://",$comment[avatar]);}

3、解决 DiscuzTips 造成的不安全资源提示。

打开 source/plugin/manyou/Service/DiscuzTips.php ,在 echo $jsCode; 前加 // 将其注释掉。

4、百度结构化插件暂不支持 https ,将造成浏览器提示存在不安全资源。暂停使用该插件。

5、清理用户签名位中的 http:// 图片,清理帖子中存在的外链图片。

6、使用浏览器的开发者工具逐一排查是否存在其他 http:// 资源(包括图片、JS、CSS的,A链接无影响)。

分享 举报

发表评论 评论 (5 个评论)

  • 祝健 2019-05-16 01:19
    原文地址:
    https://www.vdazhang.com/wenzhang-1587.html

    其他文章都没提到如何修改图片链接地址变为https,这个提到了,而且我按照上面的去做,确实有效。
  • 祝健 2019-05-16 01:24
    https://www.494v.com/forum.php?mod=viewthread&tid=293
    这篇文章是修改头像的,Discuz里面的头像用的是动态的链接,动态链接默认转成的静态链接是http的。经过这网页里面的方法后就变成https的了,安全内容。

    ==========================================

    查找修改文件avatar.php :
    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('https://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

    ==========================================
  • 祝健 2019-05-16 01:26
    步骤二
    查找修改文件discuz_application.php :
    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;
    感觉discuz_application.php文件可能不需要改,毕竟用了插件,反正我是改了,烂得改回来,有强迫症的可以自己测试下

    查找修改文件avatar.php :
    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('https://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));

    模板的调整
    主要在模板的 foot.html 以及 header.html 等文件中,使用工具逐一排查模板文件中写死的 HTTP 链接,修改为 HTTPS 。
    然后就可以像我一样完成全站HTTPS了
  • 祝健 2019-05-16 01:27
    不知道为什么网上修改avatar.php文件方法我依然是http,于是我就直接改成https了,所以就算是http,修改之后,头像也是https的。
  • 祝健 2019-05-16 01:30
    Discuz X3.4 3.3 3.2论坛转换https教程 使用SSL完美开启https教程(完整版)
    https://www.0co.cn/jiaoliu/0co656/

    这个是我最初参考的内容,但里面没有提到如何设置图片链接从http到https
涂鸦板