我有一个html页面index.html
,<HEAD>
标记中包含以下内容,以便在访问时将用户重定向到另一个页面:
<meta http-equiv="REFRESH" content="0; url=main.html">
这在我们的开发环境中运行良好。但是,当我们将页面移动到具有SSL终止的代理服务器后面时,URL会有所不同,即访问时
https://mydomain.com:443/index.html
它会使用此网址main.html
重定向到http://mydomain.com:8080/main.html
,这不是我们的预期。
我的问题是,http-equiv如何获取完整的URL路径,因为我们没有指定它,以及它是否与最终结果有关,其中应用服务器的实际端口正在使用浏览器,而不是反向代理的端口和协议。
谢谢。
答案 0 :(得分:1)
你试过吗
<meta http-equiv="REFRESH" content="0; url=https://mydomain.com:443/main.html">
答案 1 :(得分:0)
假设某个地方有<base href
,这就是它无法正常工作的原因。
答案 2 :(得分:0)
您似乎需要重定向在您的开发环境中使用HTTP,并通过代理使用HTTPS。最有效的方法是使用以//
开头的协议相对URL:
<meta http-equiv="REFRESH" content="0; url=//mydomain.com/main.html">
明显的限制是端口无法在URL中明确设置,因为它取决于协议。如果您从不打算在开发服务器上使用端口80,则可以在端口80上为您的开发服务器配置(http://mydomain.com)设置虚拟主机,该端口重定向到端口8080:
<VirtualHost *:80>
Redirect / http://mydomain.com:8080/
</VirtualHost>
(以上是针对使用mod_alias的Apache.ISS和其他服务器应该具有类似的能力。)
此外,您可以使用端口80和端口8080上的虚拟主机将所有流量定向到HTTPS。我的部分网站设置为此方式,这可确保所有流向敏感区域的流量都通过SSL(HTTPS)。
<VirtualHost *:80>
Redirect / https://mydomain.com/
</VirtualHost>
<VirtualHost *:8080>
Redirect / https://mydomain.com/
</VirtualHost>
端口号也可以包含在Redirect / https://mydomain.com:443/
中,但浏览器会假设端口443用于HTTPS地址,因此只有在SSL连接通过备用端口时才需要它。