如何在保留 POST 数据的同时重写 URL?



我正在使用Apache及其代理设置通过HTTPS提供网页(更多详细信息:单击)。

在上一个问题中,我一直在纠结为什么我的浏览器和服务器之间的 POST 数据消失了。现在我知道这是由使用Apache的RewriteRule引起的。所以我尝试使用代理解决这个问题,但这导致网页在主域上发送所有其他请求,而不是它所在的子域。例如:我的主网页在myUrl.com/sprinklers。这通过一个代理,该代理转到localhost:8091.主 HTML 页面加载,但它进行的所有其他调用,它在myUrl.com/any/path/it/needs进行,而它应该在myUrl.com/sprinklers/any/path/it/needs

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

  • 使用RewriteRule意味着一切正常,但我丢失了我需要的 POST 数据。
  • 使用代理意味着 POST 数据有效,但也意味着我得到了大量的 404,因为网页现在以某种方式期望事情位于域的根目录,而不是它所在的子域。

尾部斜杠需要在那里,因为没有它,就像我使用代理时一样,我为网页的所有零碎部分都会得到大量的 404。

我尝试在所有形状和形式中使用ProxyHTMLURLMap(全部在线找到),但没有一个有效。

TL;博士:

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

和往常一样,问,你会自己找到答案......

事实证明,它比我想象的要简单得多。简单地告诉RewriteRule使用HTTP代码307就可以了。显然,这与其他重定向代码相同,但 307 也保留 POST 数据。

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

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

就是这样,固定的。

最新更新