HTML - 如何http-equiv ="刷新"重定向到没有完整网址的网页?

时间:2014-04-17 05:29:56

标签: html webserver reverse-proxy

我有一个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路径,因为我们没有指定它,以及它是否与最终结果有关,其中应用服务器的实际端口正在使用浏览器,而不是反向代理的端口和协议。

谢谢。

3 个答案:

答案 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连接通过备用端口时才需要它。