我正在使用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]
就是这样,固定的。