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

Posted

技术标签:

【中文标题】apache httpd.conf 中带有问号字符的问题【英文标题】:problem in apache httpd.conf with question mark character 【发布时间】:2011-05-06 03:57:13 【问题描述】:

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

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

系统响应

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

【问题讨论】:

【参考方案1】:

来自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。但是我自己没有测试过。

【讨论】:

如果代理到“localhost:9080/servlet/StubEndpoint”,没有查询字符串会怎样? 它需要查询字符串。它以“null”消息响应。【参考方案2】:

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

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

【讨论】:

以上是关于apache httpd.conf 中带有问号字符的问题的主要内容,如果未能解决你的问题,请参考以下文章

Apache的主配置文件:/etc/httpd/conf/httpd.conf

httpd.conf 上的用户/组的 Apache 问题 - 权限

Apache 默认在哪里安装 httpd.conf?

apache httpd.conf

httpd.conf文件夹在哪里,需要apache 配置完httpd.conf

Apache主配置文件httpd.conf