Apache RewriteRule-代理标志不起作用

Apache RewriteRule-代理标志不起作用

我在 Linux Mint 发行版上运行 Apache 2.2.20 时遇到了问题。

我的 .htaccess 文件中有以下规则:

RewriteEngine on
RewriteRule old1/old2 http://localhost/new1 [P]

当我浏览到 时,http://localhost/old1/old2只会重定向到localhost/new1。也就是说,地址栏中会显示新 URL。我希望显示“old1/old2”URL(包含来自 /new1 的页面内容)。我做错了什么?

我已经安装了 mod_proxy 和 mod_proxy_http (即a2enmod proxy) a2enmod proxy_http

答案1

如果两个资源都在同一个 Web 服务器上,只需进行内部重写,例如

RewriteEngine on
RewriteRule old1/old2 /new1 [L]

答案2

我认为你还需要一个ProxyPassReverse声明。以下是一个例子http://httpd.apache.org/docs/2.4/rewrite/proxy.html

RewriteEngine  on
RewriteBase    /products/
RewriteRule    ^widget/(.*)$  http://product.example.com/widget/$1  [P]
ProxyPassReverse /products/widget/ http://product.example.com/widget/

答案3

RewriteEngine on RewriteRule ^old1/old2*$ http://localhost/new1 [P] RewriteRule ^old1/old2/*$ http://localhost/new1 [P]

如果不起作用,尝试将“localhost”更改为“localhost:80”。

相关内容