Gan*_*air 5 apache mod-rewrite url-rewriting
我有一个apache Web服务器,充当内部应用服务器的反向代理.我已经使用ProxyPass和ProxyPassReverse来实现这一目标.我有多个上下文根映射到不同的应用程序.
我试图从一个上下文的域名中删除上下文根,以便用户可以直接访问网站https://mydomain.com而不是https://mydomain.com/contextRoot.我添加了以下重写规则,而不是此上下文的proxypass和proxypassreverse配置.
# redirecting old URL to new URL
RewriteRule ^/contextRoot(.*)$ https://mydomain.com$1 [L,R=301]
# proxying to internal app servers
RewriteCond %{REQUEST_URI} !^(/anotherContextRoot1.*)$
RewriteCond %{REQUEST_URI} !^(/anotherContextRoot2.*)$
RewriteRule .* http://10.1.0.1:8080/contextRoot%{REQUEST_URI} [L,P]
Run Code Online (Sandbox Code Playgroud)
此配置适用于所有http GET请求.对于POST请求,重定向发生,但后续调用变为GET.
请帮助我理解为什么会发生这种情况,我该如何纠正这一点.我还想了解是否有更多的重写规则配置,我已经添加到以前的配置中执行proxypassreverse.
这个问题在这里回答https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect/99966#99966 - 这个答案的简短摘要
在 HTTP 1.1 中,实际上有一个状态代码 (307),它指示应该使用相同的方法和发布数据重复请求。
正如其他人所说,这里存在误用的可能性,这可能是许多框架在其抽象中坚持使用 301 和 302 的原因。
| 归档时间: |
|
| 查看次数: |
14090 次 |
| 最近记录: |