带有问号字符的apache httpd.conf中的问题

时间:2010-11-06 23:08:17

标签: apache2 httpd.conf url-encoding

我的httpd.conf文件中有以下行

ProxyPass / something http://localhost:9080/servlet/StubEndpoint?stub=stub

系统以

响应

请求的资源(/ servlet / StubEndpoint%3Fstub = stub /)不可用,即它替代?与%3F。我该如何解决这个问题?这个问号似乎被“%3F”代替,我回到了404

2 个答案:

答案 0 :(得分:2)

来自ProxyPass的文档:

url is a partial URL for the remote server and cannot include a query string.

在您的示例中,stub=stub是查询字符串。 %3F替换是URL encoding的一部分。

您可以代理到一个URL,然后将其重定向到最终目的地(使用查询字符串),例如:

ProxyPass /something http://localhost:9080/proxy
RewriteEngine on
RewriteRule ^/proxy /StubEndpoint?stub=stub

这会导致任何以/ something开头的URL返回重定向到StubEndpoint?stub = stub。但是我自己没有测试过。

答案 1 :(得分:1)

我喜欢在位置分组。我的工作解决方案是:

<Location /something>
    RewriteEngine On
    RewriteRule ^ http://localhost:9080/servlet/StubEndpoint?stub=stub [P]
</Location>