【问题标题】:Redirecting http to https without mod_rewrite在没有 mod_rewrite 的情况下将 http 重定向到 https
【发布时间】:2024-05-19 18:05:01
【问题描述】:

我正在使用一个认为 HTTP 和 HTTPS 可以在同一个端口上共存的应用程序 (MediaCP)。我无法修改代码,因为它使用了 IonCube 和其他一些恶作剧,但我可以编辑 JS 播放器,或者在需要时添加文件。由于它是缩小的,因此很难知道在哪里寻找,如果您想看一下,我附上它:https://pastebin.com/DiCnMq32

问题是,当我在 HTTP 页面上请求 .js 文件时,它会尝试使用 HTTP 加载内容,可能是因为它使用 /// 作为请求协议...

我一直在使用 ErrorDocument 400 将这些请求重定向到 HTTPS,但 REQUEST_URI 在进程中丢失了...

ErrorDocument 400 https://example.com:2000

这对尝试登录的用户来说很好,但是当输入http://example.com:2000/jwplayer.flash.swf时,它总是会重定向到https://example.com:2000,并且JS代码将不起作用。

我不能使用 REDIRECT_ 服务器变量,因为 https:// 前缀,这使 Apache 认为重定向将发送到远程服务器,默认情况下它不会发送这些标头。

我无法删除 https://example.com:2000 前缀来使用本地 php / cgi 文件,因为它会导致无限循环(哦,https 错误让我们尝试加载 400 错误页面,哦 https 是错了,让...)。也许使用 ScriptAlias 会覆盖 HTTPS 检查?我没有任何运气,但如果您认为它会成功,我会尝试。

我也尝试将 %{REQUEST_URI} 添加到 ErrorDocument 行,但变量似乎始终为空。

有什么想法吗?

PS:我在 CentOS 7 上使用 Apache 2.4.25

【问题讨论】:

    标签: apache https http-status-code-400


    【解决方案1】:

    尝试在标签中将 JavaScript 文件引用为 src="//url/somfolder/somefile.js",它应该使用当前的 ref 前缀 http:https:,而不是专门调用它。示例:

    <script src="//example.com/script.js"></script>
    

    注意 CSS 可以以类似的方式引用:

    <link rel="stylesheet" href="//example.com/style.css">
    

    【讨论】: