Mod rewrite 防止mod rewrite拆分URI

Mod rewrite 防止mod rewrite拆分URI,mod-rewrite,Mod Rewrite,全部-- 在反向代理上,我试图自动将querystring参数附加到传入URI的末尾,而mod rewrite似乎做了一些奇怪的事情 如果我使用这样的规则: RewriteEngine On # Turn on the rewriting engine RewriteRule /t/SkunkWorks/views/LabelLocalization/Dashboard$ /t/SkunkWorks/views/LabelLocalization/Dashboard\?Lang

全部--

在反向代理上,我试图自动将querystring参数附加到传入URI的末尾,而mod rewrite似乎做了一些奇怪的事情

如果我使用这样的规则:

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    /t/SkunkWorks/views/LabelLocalization/Dashboard$    /t/SkunkWorks/views/LabelLocalization/Dashboard\?Language=3  [L,PT]
#####Proxy Rule
ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://server8/
ProxyPassReverse / http://server8/
AllowEncodedSlashes On
到目前为止还不错

我还看到请求到达反向代理传递给的机器:

192.168.203.34 - - [19/Apr/2013:11:35:04 -0400] 80 "GET /t/SkunkWorks/views/LabelLocalization/Dashboard?Language=3 HTTP/1.1" "fe80::a53f:6156:2a22:378d, 192.168.203.34" 200 4052 "-" 109186 UXFkKMCoyx0AAAA0Q2UAAAEM
但是,在目标计算机(192.168.203.29)上执行工作的应用程序没有正确响应。它挂起,而不是使用特定语言呈现报表

如果我执行
http://192.168.203.29/t/SkunkWorks/views/LabelLocalization/Dashboard?Language=3
直接针对应用程序服务器,报告呈现良好。似乎是重写规则导致了问题

为什么??我在error.log中看到了这一点:

[Fri Apr 19 10:55:55.194288 2013] [rewrite:trace2] [pid 13240:tid 712] mod_rewrite.c(468): [client fe80::a53f:6156:2a22:378d:32996] fe80::a53f:6156:2a22:378d - - [simpleprime/sid#982130][rid#dbcd50/initial] init rewrite engine with requested uri /t/SkunkWorks/views/LabelLocalization/Dashboard
[Fri Apr 19 10:55:55.194288 2013] [rewrite:trace3] [pid 13240:tid 712] mod_rewrite.c(468): [client fe80::a53f:6156:2a22:378d:32996] fe80::a53f:6156:2a22:378d - - [simpleprime/sid#982130][rid#dbcd50/initial] applying pattern '/t/SkunkWorks/views/LabelLocalization/Dashboard$' to uri '/t/SkunkWorks/views/LabelLocalization/Dashboard'
[Fri Apr 19 10:55:55.194288 2013] [rewrite:trace2] [pid 13240:tid 712] mod_rewrite.c(468): [client fe80::a53f:6156:2a22:378d:32996] fe80::a53f:6156:2a22:378d - - [simpleprime/sid#982130][rid#dbcd50/initial] rewrite '/t/SkunkWorks/views/LabelLocalization/Dashboard' -> '/t/SkunkWorks/views/LabelLocalization/Dashboard?Language=3[L,PT]'
RIGHT HERE ->>>>[Fri Apr 19 10:55:55.194288 2013] [rewrite:trace3] [pid 13240:tid 712] mod_rewrite.c(468): [client fe80::a53f:6156:2a22:378d:32996] fe80::a53f:6156:2a22:378d - - [simpleprime/sid#982130][rid#dbcd50/initial] split uri=/t/SkunkWorks/views/LabelLocalization/Dashboard?Language=3[L,PT] -> uri=/t/SkunkWorks/views/LabelLocalization/Dashboard, args=Language=3[L,PT]**
如果我简化规则并删除?Language=3,事情会很顺利:

RewriteRule    /t/SkunkWorks/views/LabelLocalization/Dashboard$    /t/SkunkWorks/views/LabelLocalization/Dashboard  [L,PT]
我可以用鼠标点击反向代理

http://192.168.203.34/t/SkunkWorks/views/LabelLocalization/Dashboard?Language=3
…并正确地传递到192.168.203.29框。机器按其应有的方式呈现报告

我猜“URI拆分”是问题的原因…因为当我在error.log中没有看到它时,事情就会运行,当我看到它时,它们就会崩溃


我能做些什么来防止URI拆分?

您是否尝试过删除查询字符串问号之前的反斜杠?目标URL不是正则表达式,因此您不需要逃避问号。是的,我启动了逃避…后来添加了它以查看它是否有影响。Apache正在将请求发送到
192.168.203.34:9089
,但您正在测试
192.168.203.29
。如果您直接请求
192.168.203.34:9089
地址怎么办?
http://192.168.203.34/t/SkunkWorks/views/LabelLocalization/Dashboard?Language=3