如何在保留 POST 数据的同时重写 URL?
How to rewrite a URL while keeping POST data?
我正在使用 Apache 及其代理设置通过 HTTPS 提供网页服务(更多详细信息请参见:)。
在上一个问题中,我正在努力解决 为什么 POST 数据在我的浏览器和服务器之间消失的问题。现在知道是使用Apache的RewriteRule
引起的。所以我尝试使用代理解决这个问题,但这导致网页在主域而不是它所在的子域上发送所有其他请求。例如:我的主页位于 myUrl.com/sprinklers
。这通过一个代理,该代理转到 localhost:8091
。 HTML 主页面加载,但 ALL 其他调用在 myUrl.com/any/path/it/needs
进行,而它应该在 myUrl.com/sprinklers/any/path/it/needs
.
可悲的是,我被困在中间:
- 使用
RewriteRule
意味着一切正常,但我丢失了我需要的POST数据。
- 使用代理意味着 POST 数据有效,但我也会收到大量 404,因为网页现在以某种方式期望内容位于域的根目录,而不是子域在
结尾的斜线必须存在,因为没有它,我使用代理时会发生同样的情况,网页的所有部分都会出现大量 404。
我尝试以各种形式使用 ProxyHTMLURLMap(全部在网上找到),但 none 有效。
长话短说:
我需要在 myUrl.com/sprinklers/.*
和 localhost:port/.*
之间启用双向流量,同时还要保留 POST 数据。我该怎么做?
一如既往地问,你会自己找到答案...
原来比想象中的简单多了。简单地告诉 RewriteRule
使用 HTTP 代码 307 就可以了。显然,这与其他重定向代码相同,但 307 还保留了 POST 数据。
对于那些想知道如何在 Apache 中执行此操作的人:
RewriteRule ^/sprinklers$ /sprinklers/ [R=307]
就是这样,已修复。
我正在使用 Apache 及其代理设置通过 HTTPS 提供网页服务(更多详细信息请参见:
在上一个问题中,我正在努力解决 为什么 POST 数据在我的浏览器和服务器之间消失的问题。现在知道是使用Apache的RewriteRule
引起的。所以我尝试使用代理解决这个问题,但这导致网页在主域而不是它所在的子域上发送所有其他请求。例如:我的主页位于 myUrl.com/sprinklers
。这通过一个代理,该代理转到 localhost:8091
。 HTML 主页面加载,但 ALL 其他调用在 myUrl.com/any/path/it/needs
进行,而它应该在 myUrl.com/sprinklers/any/path/it/needs
.
可悲的是,我被困在中间:
- 使用
RewriteRule
意味着一切正常,但我丢失了我需要的POST数据。 - 使用代理意味着 POST 数据有效,但我也会收到大量 404,因为网页现在以某种方式期望内容位于域的根目录,而不是子域在
结尾的斜线必须存在,因为没有它,我使用代理时会发生同样的情况,网页的所有部分都会出现大量 404。
我尝试以各种形式使用 ProxyHTMLURLMap(全部在网上找到),但 none 有效。
长话短说:
我需要在 myUrl.com/sprinklers/.*
和 localhost:port/.*
之间启用双向流量,同时还要保留 POST 数据。我该怎么做?
一如既往地问,你会自己找到答案...
原来比想象中的简单多了。简单地告诉 RewriteRule
使用 HTTP 代码 307 就可以了。显然,这与其他重定向代码相同,但 307 还保留了 POST 数据。
对于那些想知道如何在 Apache 中执行此操作的人:
RewriteRule ^/sprinklers$ /sprinklers/ [R=307]
就是这样,已修复。