You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Moodle 3.9.19 HTTP-HTTPS重定向问题致文件下载失败,求解决方案

解决Moodle 3.9.19升级后HTTPS访问下的文件下载混合内容错误

问题根源

Moodle从3.7升到3.9后,对站点协议的校验逻辑更严格了。你这情况是外部用户走HTTPS访问(但服务器本身没装SSL,内部用HTTP),Moodle默认按内部HTTP生成文件链接,浏览器检测到页面是HTTPS但资源是HTTP,触发混合内容拦截,直接阻止下载。

具体修复步骤

1. 修改Moodle配置文件适配HTTPS

找到Moodle根目录的config.php,添加以下代码:

$CFG->wwwroot = 'https://你的实际域名'; // 替换为用户访问用的HTTPS域名
$CFG->sslproxy = true; // 告知Moodle站点运行在SSL代理之后
$CFG->reverseproxy = true;
$CFG->sslwwwroot = 'https://你的实际域名';

提醒:如果服务器内部仍需HTTP访问,$CFG->wwwroot可保留HTTP,但必须设置$CFG->sslwwwroot为HTTPS,同时开启sslproxy,让Moodle识别外部的HTTPS请求。

2. 配置IIS传递HTTPS请求标识

由于前端HTTPS请求到IIS后转为HTTP,需要让PHP知晓当前实际是HTTPS请求:

  • 打开IIS管理器,找到你的Moodle站点,进入「URL重写」模块
  • 新建空白规则:
    • 匹配URL填写(.*)
    • 添加条件:{HTTP_X_FORWARDED_PROTO}等于https
    • 操作选择「重写」,重写URL填{R:1},然后在「服务器变量」中添加HTTPS,值设为on
  • 保存规则后重启IIS服务

3. 清理Moodle缓存

修改配置后必须清理缓存,否则可能不生效:

  • 登录Moodle后台,进入「站点管理」→「开发」→「清除缓存」
  • 也可直接删除Moodle目录下cache文件夹内的所有文件(保留文件夹本身)

4. 检查文件存储的URL设置

如果使用了外部文件存储(如本地存储、第三方存储),需确保生成的文件链接为HTTPS:

  • 进入「站点管理」→「插件」→「文件存储」→「存储库」
  • 逐个检查存储库配置,将访问URL调整为HTTPS协议

验证修复效果

完成以上操作后,用外部HTTPS访问站点并尝试下载文件:

  • 打开浏览器F12开发者工具,切换到「网络」标签
  • 点击下载链接,查看请求URL是否为HTTPS
  • 若不再出现「Mixed Content」错误,说明修复成功

内容的提问来源于stack exchange,提问作者Lyrics Studio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:00:32