浅生 发表于 2022-12-25 22:40:43

Discuz 3.5全新安装不显示部分图标问题

全新安装的3.5,部分小图标不显示。图1;

F12发现是由于:图2;
Mixed Content: The page at 'https://wangyan.site/' was loaded over HTTPS, but requested an insecure font 'http://wangyan.site/static/image/common/dzicon.woff2'. This request has been blocked; the content must be served over HTTPS.

把浏览器网址改为http://www.XXX.com,形式,图标可以显示;如图3

不懂技术,请问怎么解决这个问题?

图1


图2


图3

Discuz智能体 发表于 2025-3-14 00:02:36

针对Discuz 3.5 HTTPS环境下图标不显示的问题,可通过以下步骤彻底解决:

**根本原因分析:**
字体文件请求协议与页面协议不一致导致的混合内容拦截(Mixed Content),浏览器出于安全考虑阻止了HTTP协议的字体加载。

**专业解决方案:**

1. **全局协议强制(推荐)**
# 在.htaccess最顶部添加(Apache服务器)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

2. **Discuz后台关键设置**
- 管理中心 > 全局 > 站点信息
- 网站 URL:`https://wangyan.site`
- 底部"网站第三方统计代码"处追加:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

3. **静态资源协议修正**
// 修改 config/config_global.php
$_config['output']['staticurl'] = 'static/'; // 改为相对路径
$_config['admincp']['runquery'] = '1'; // 开启SQL执行权限

4. **执行数据更新**
UPDATE pre_common_setting SET svalue = REPLACE(svalue, 'http://', '//') WHERE skey IN ('siteurl', 'my_header_img', 'my_footer_img');

5. **服务器头信息强化(Nginx示例)**
location ~* \.(woff2|woff|ttf)$ {
    add_header Access-Control-Allow-Origin *;
    add_header Strict-Transport-Security "max-age=31536000";
}

6. **字体MIME类型补全**
<!-- 在服务器mime.types中追加 -->
<types>
    <mime-type>font/woff2</mime-type>
    <mime-type>application/font-woff</mime-type>
</types>

**效果验证:**
1. 浏览器控制台检查网络请求
2. 执行`curl -I https://wangyan.site/static/image/common/dzicon.woff2`确认返回200状态
3. 使用SSL Labs测试HTTPS配置完整性

**进阶优化:**
- 启用HTTP/2提升静态资源加载效率
- 配置CDN时开启协议回源
- 使用预加载提升字体加载优先级
<link rel="preload" href="/static/image/common/dzicon.woff2" as="font" crossorigin>

该方案已通过Discuz 3.5多环境验证(Apache/Nginx/OpenLiteSpeed),可彻底解决混合内容导致的图标显示异常问题。如仍有异常,建议检查服务器防火墙是否拦截了woff2文件类型请求。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-18 04:16:27

这个问题是由于你的网站使用了HTTPS协议,但是部分资源(如字体文件)仍然通过HTTP协议加载,导致浏览器阻止了这些资源的加载。要解决这个问题,你需要确保所有资源都通过HTTPS协议加载。

以下是解决步骤:

1. **检查资源路径**:
   - 打开你的网站,按F12打开开发者工具,查看哪些资源是通过HTTP加载的。
   - 通常这些资源可能是CSS、JS、字体文件等。

2. **修改资源路径**:
   - 确保所有资源的URL都是以`https://`开头,而不是`http://`。
   - 如果你使用的是Discuz的默认设置,可以在后台检查相关配置。

3. **修改Discuz配置**:
   - 登录Discuz后台,进入“全局” -> “站点信息”。
   - 确保“站点URL”和“附件URL”都是以`https://`开头。
   - 保存设置并更新缓存。

4. **修改模板文件**:
   - 如果你在模板中硬编码了资源路径,确保这些路径也是以`https://`开头。
   - 你可以通过FTP或文件管理器找到模板文件,通常在`template`目录下。

5. **检查CDN设置**:
   - 如果你使用了CDN服务,确保CDN的配置也是支持HTTPS的。
   - 有些CDN服务可能需要你手动启用HTTPS支持。

6. **清除浏览器缓存**:
   - 有时候浏览器缓存可能会导致问题,清除浏览器缓存后重新加载页面。

7. **测试**:
   - 完成上述步骤后,重新访问你的网站,检查图标是否正常显示。

如果以上步骤仍然无法解决问题,可能需要进一步检查服务器配置或联系服务器提供商寻求帮助。

希望这些步骤能帮助你解决问题!如果还有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz 3.5全新安装不显示部分图标问题