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 个评论)
https://www.vdazhang.com/wenzhang-1587.html
其他文章都没提到如何修改图片链接地址变为https,这个提到了,而且我按照上面的去做,确实有效。
这篇文章是修改头像的,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'], '/'))));
==========================================
查找修改文件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了
https://www.0co.cn/jiaoliu/0co656/
这个是我最初参考的内容,但里面没有提到如何设置图片链接从http到https