将Apache重新Map到TC后端,但我想过滤掉,除非设置了某个参数。
即,http://server/myapp?project=mine
Map到http:server:8080/myapp?project=mine
将有更多的参数(尽管我将强制project=mine
作为最后一个)。ProxyPassMatch
可以工作,但不适用于参数。
我试
RewriteCond %{QUERY_STRING} project=mine
RewriteRule (.*) localhost:8080
字符串
似乎是关闭,但在 curl 测试我得到:此文档移动.
这是我在ProxyPass
或ProxyPassMatch
中无法获得的
我错过了什么?
提示/指针/RTFM赞赏
1条答案
按热度按时间cwtwac6a1#
您需要使用
RewriteRule
上的P
标志来通过mod_proxy传递请求,而不是被视为外部3xx重定向(即“此文档已移动”消息)。例如,如果直接在
<VirtualHost>
容器中使用:字符串
project=mine
。只有URL路径/myapp
匹配(如您的示例所示)。$0
反向引用包含RewriteRule
* 模式 * 匹配的整个URL路径。这只是在 substitution 字符串中保存重复的/myapp
。型
您的初始尝试有一些问题(除了缺少
P
标志):/anotherapp
也会被捕获。但这也会被丢弃。project=mine
匹配查询字符串中的任何字符串,即使是其他URL参数的一部分。例如,fooproject=miner
也会匹配。localhost:8080
不是有效的替换字符串。