我在 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”。