如何重写经过apach mod_proxy的url

时间:2011-06-05 15:29:09

标签: apache mod-rewrite proxy url-rewriting mod-proxy

我使用mod_proxy和mod_proxy_http将我的apache 2.2服务器配置为一个简单的转发代理。

当客户端请求以下格式的URL时:

http://specific.host.com/specific?specificarg1=(.+)&specificarg2=(.+)&specificarg3=specificvalue

以重写形式请求,其中 specificarg1 specificarg2 的值被我的服务器配置中定义的值替换。

也可以不使用正则表达式,而是将特定网址重写为另一个特定网址,但我更喜欢使用正则表达式匹配。

所以在阅读了mod_rewrite,mod_proxy的文档后,我尝试了类似下面的内容,以便进行某种重写:

RewriteRule .* http://www.google.com/ [P,L]

就像在服务器配置中那样,在代理浏览时没有任何内容被重写

<VirtualHost *:80>
ServerName domain-i-tried-to-surf-to.com
`RewriteRule .* http://www.google.com/ [P,L]
</VirtualHost>

没有运气

ProxyPass(Reverse) / http://www.google.com
ProxyPass(Reverse) /path/i/tried/to/surf/to http://www.google.com

也没有运气

ProxyRemote * http://www.google.com

也没有运气

我还尝试将重写规则放入proxymatch指令中,但我无法重写url。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

首先需要在开头添加RewriteEngine on语句,甚至让mod_rewrite处理任何规则。