Apache HTTP 服务器版本 2.5

本文档是 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 指令,
以确保后端发出的任何重定向都能正确地传递给客户端。
请尽可能考虑使用 ProxyPass 或 ProxyPassMatch 来代替
mod_rewrite。