使用代理来重写规则吗?

使用代理来重写规则吗?

我正在设置 RewriteRule,但目前它只是重定向浏览器。我想要的是代理,这样用户就不会识别出后面更改的 URL。

我绕着 P 旗走了过去:

RewriteRule ^/(.*) ... [P]

和语句是一样的ProxyPass

现在:如何ReverseProxyPass在重写规则中发表声明?

答案1

你不需要,但是你通常可以让它按照你需要的方式工作。

首先,请确保您需要使用RewriteRule而不是简单地使用。您提供的规则非常简单;如果您前面ProxyPass没有任何逻辑,那么您可以轻松地使用。RewriteCondProxyPass

无论如何,让我们举一个例子,你正在做这样的事情:

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实际应用的“条件”仍然适用。

合理?

相关内容