本文档是mod_rewrite
参考文档的补充。它描述了如何使用RewriteRule的[P]标志将内容代理到另一台服务器。提供了许多描述常见方案的食谱。
mod_rewrite提供[P]标志,该标志允许URL通过mod_proxy传递到另一台服务器。这里给出两个例子。在一个示例中,URL被直接传递到另一台服务器,并且充当本地URL。在另一个示例中,我们将丢失的内容代理到后端服务器。
为了简单地将URL映射到另一台服务器,我们使用[P]标志,如下所示:
RewriteEngine on RewriteBase "/products/" RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
在第二个示例中,仅当我们无法在本地找到资源时,我们才代理请求。当您从一台服务器迁移到另一台服务器时,这非常有用,并且您不确定所有内容是否都已迁移。
RewriteCond "%{REQUEST_FILENAME}" !-f RewriteCond "%{REQUEST_FILENAME}" !-d RewriteRule "^/(.*)" "http://old.example.com/$1" [P] ProxyPassReverse "/" "http://old.example.com/"
在每种情况下,我们都添加一条ProxyPassReverse
指令以确保后端发出的任何重定向均正确地传递给客户端。
考虑优先使用mod_rewrite之一ProxyPass
或ProxyPassMatch
尽可能使用它。