![如何在 Apache 中通过 ProxyPass 传递参数](https://linux22.com/image/632671/%E5%A6%82%E4%BD%95%E5%9C%A8%20Apache%20%E4%B8%AD%E9%80%9A%E8%BF%87%20ProxyPass%20%E4%BC%A0%E9%80%92%E5%8F%82%E6%95%B0.png)
我正在尝试做但遇到困难的是:
我有一个 apache 服务器,它可以捕获某些 url,对于其中一些 url,它将使用 ProxyPass(或 mod_rewrite)将某些内容作为反向代理传递到另一个 apache 实例。
所以我得到了这样的网址:
/index.php/info?format=xml&token=SOMENUMERICTOKEN&token=SUMENUMERICTOKEN
我试过了 :
PassProxy /index.php/info?format=xml https://1.2.3.4:567/index.php/info?format=xml
和相关的 ProxyReverse,但它不起作用
还尝试使用相同的行和 [P] 结尾重写以进行代理。
它们都不起作用。
如果我以 /index.php 结尾,它们就会起作用,但我无法允许访问 index.php
答案1
ProxyPass 仅对匹配的 URL 部分进行操作,而不对查询字符串进行操作。如果您在模式中包含查询字符串,您将永远无法获得匹配。
因此,为了做你想做的事情,你可以使用类似以下的方法:
ProxyPass /index.php/info https://1.2.3.4:567/index.php/info
尽管在这种情况下你甚至可能可以使用:
ProxyPass / https://1.2.3.4:567/
基本上,将 proxypass 视为一种“搜索和替换”。“ProxyPass A B”基本上意味着“在 URL 中查找 A,如果找到,则用 B 替换”。
答案2
好的。
我刚刚将 /index.php/info 留在 ProxyPass 中,它就起作用了。也许是转义 ? 标记出了问题。
作品。