将http重定向到https而不使用mod_rewrite

时间:2017-03-27 17:26:27

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

我正在使用一个认为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代码将无效。

由于https://前缀,我无法使用REDIRECT_服务器变量,这使得Apache认为重定向将转到远程服务器,并且默认情况下它不会发送这些标头。

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

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

有什么想法吗?

PS:我在CentOS 7上使用Apache 2.4.25

1 个答案:

答案 0 :(得分:0)

尝试在标记中引用JavaScript文件为src="//url/somfolder/somefile.js",它应该使用当前的引用前缀http:https:,而无需专门调用它。例如:

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

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

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