如何在保留 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.

可悲的是,我被困在中间:

结尾的斜线必须存在,因为没有它,我使用代理时会发生同样的情况,网页的所有部分都会出现大量 404。

我尝试以各种形式使用 ProxyHTMLURLMap(全部在网上找到),但 none 有效。

长话短说:

我需要在 myUrl.com/sprinklers/.*localhost:port/.* 之间启用双向流量,同时还要保留 POST 数据。我该怎么做?

一如既往地问,你会自己找到答案...

原来比想象中的简单多了。简单地告诉 RewriteRule 使用 HTTP 代码 307 就可以了。显然,这与其他重定向代码相同,但 307 还保留了 POST 数据。

对于那些想知道如何在 Apache 中执行此操作的人:

RewriteRule ^/sprinklers$ /sprinklers/ [R=307]

就是这样,已修复。