Apache重写规则将完整的URL转发到不同的端口

时间:2017-02-10 22:00:54

标签: apache

我有以下Apache重写规则:

RewriteRule ^(.*)$ http://127.0.0.1:8002$1 [P,L,NC]

目的是将所有传入的URL转发到本地端口8002,其中Express应用正在侦听传入请求。问题是此规则转发基本URL而不是查询字符串参数。

例如,当Apache看到http://example.com/test/时,Express看到http://example.com/test/但是当Apache看到http://example.com/test/?a=b时,Express仍会看到http://example.com/test/

如何将查询字符串传递到端口8002?

2 个答案:

答案 0 :(得分:0)

不确定这是否是最佳解决方案,但您可以这样做:

RewriteRule ^(.*)$ http://127.0.0.1:8002$1?%{QUERY_STRING} [P,L,NC]

答案 1 :(得分:0)

看起来正确的方法是在https://stackoverflow.com/a/12873205/82135

处添加QSA标志

所以,

RewriteRule ^(.*)$ http://127.0.0.1:8002$1 [P,L,NC,QSA]

现在有效。