您好我目前在我的apache httpd.conf文件中使用下面的代码redirect从HTTP到HTTPS
<VirtualHost 10.1.2.91:80> Redirect 302 /GladQE/link https://glad-test.com/GladQE/link.do Redirect 302 /GladQE/retrieve https://glad-test.com/GladQE/retrieve.do </VirtualHost>
这将redirect来自获取请求的参数,但不是来自post。 从阅读这里看来,这需要使用mod_rewrite来完成。
有人可以帮助修改我需要做的,所以当左边的链接被使用post params命中时,它会redirect到右边的链接,参数保持不变?
非常感谢
汤姆
看起来像Apacheconfiguration? 指定类似的东西是个好主意。 标签虽然确认。
该configuration仅在端口443连接时运行,因此无法从 HTTPredirect。
除非您将请求转换为GET并将参数写入URL,否则不能执行响应POST请求的30 [12]redirect并保留参数。 不是真的推荐。
您可以代理请求,但我不确定是否解决了您的问题。
如果用户已经通过一个未encryption的连接通过POST提交了数据,并且你关心encryption,那么最好让这个请求中断,这样它就会被注意和修复。 您应该修复您的表单目标,并确保表单本身(或者包含AJAX的页面或其他内容)通过HTTPS发送给用户。
UPDATE
鉴于shawsy已经说过,问题是浏览器无法与服务器build立HTTPS连接,redirect绝对不是你想要的。 而是你想代理的请求:
<VirtualHost 10.1.2.91:80> # http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass ProxyPass /GladQE/link https://glad-test.com/GladQE/link.do ProxyPass /GladQE/retrieve https://glad-test.com/GladQE/retrieve.do </VirtualHost>
你也可以用mod_rewrite和RewriteRule来做。
如果您要更改域名,还有一些额外的问题需要解决,但我认为这不是这种情况。
除此之外,我个人不喜欢把主机名或IP地址放在除了服务器的/ etc / hosts文件之外的任何地方。 如果你在主机文件中使用名字,如'web'和'mysql'来定位服务而不是机器,你可以参考你的apache和其他文件中的名字,那么你可以更容易地在机器之间移动configuration,知道你只需要查看hosts文件中的内容。
你可以使用307redirect来保持方法。 维基百科 :
在这种情况下,请求应该与另一个URI重复; 但是,将来的请求仍应使用原始URI。 与历史上302如何实现不同,请求方法在重新发送原始请求时不允许被改变。 例如,POST请求应该使用另一个POST请求重复。