我正在设置 RewriteRule,但目前它只是重定向浏览器。我想要的是代理,这样用户就不会识别出后面更改的 URL。
我绕着 P 旗走了过去:
RewriteRule ^/(.*) ... [P]
和语句是一样的ProxyPass
。
现在:如何ReverseProxyPass
在重写规则中发表声明?
答案1
你不需要,但是你通常可以让它按照你需要的方式工作。
首先,请确保您需要使用RewriteRule
而不是简单地使用。您提供的规则非常简单;如果您前面ProxyPass
没有任何逻辑,那么您可以轻松地使用。RewriteCond
ProxyPass
无论如何,让我们举一个例子,你正在做这样的事情:
RewriteRule ^/proxied-location/(.*)$ http://backend/$1 [P]
因此,您接受请求并将其发送到不包含URL 部分的http://your-apache-server/proxied-location/something.html
后端。/proxied-location/
重定向 ( 30x
) 响应不会包含/proxied-location/
URL 的一部分,尽管客户端需要该部分才能通过代理访问其他资源。这就是ProxyPassReverse
处理方式。因此,只需添加如下配置:
ProxyPassReverse /proxied-location/ http://backend/
该配置仅适用于代理后端处理响应的请求,因此您mod_rewrite
实际应用的“条件”仍然适用。
合理?