使用 proxyPass 和 proxyPassReverse 的 Apache 重写

Posted

技术标签:

【中文标题】使用 proxyPass 和 proxyPassReverse 的 Apache 重写【英文标题】:Apache rewriterule with proxyPass and proxyPassReverse 【发布时间】:2013-03-02 10:48:04 【问题描述】:

我需要将以下重写规则与 proxyPass 和 proxyPassReverse 一起使用

RewriteEngine On
RewriteRule  ^(market|stock|mutual)$ ***/$1 [L]

我的虚拟主机定义是

<VirtualHost *>
    ServerName localhost
    ProxyPass / http://localhost:8080/ 
    ProxyPassReverse / http://localhost:8080/  
</VirtualHost>

我应该在哪里插入重写规则,以便当我点击 URL -- localhost/market 时,它将对 localhost:8080/***/market 执行内部重写

请帮忙

【问题讨论】:

【参考方案1】:

知道了

<VirtualHost *>
    ServerName localhost
    ProxyPass / http://localhost:8080/***/ 
    ProxyPassReverse / http://localhost:8080/***/ 
    RewriteEngine On
    RewriteRule  ^(market|stock|mutual)$ ***/$1 [L]
</VirtualHost>

【讨论】:

您能帮我理解为什么在这种情况下将RewriteRule 放在&lt;Directory&gt; 部分没有效果吗?是不是因为ProxyPass先生效,其他指令都没有应用? iX3,你是对的。 ProxyPass 优先于 mod_rewrite 和 mod_alias。

以上是关于使用 proxyPass 和 proxyPassReverse 的 Apache 重写的主要内容,如果未能解决你的问题,请参考以下文章

将 httpd ProxyPass 与 DirectoryIndex 一起使用

使用多个 ProxyPass 配置 Apache

使用Weblogic的Apache 2.2 ProxyPass - 不能使用root

ProxyPass 和 DocumentRoot 在一个域上

Apache 和 Tomcat:ProxyPass 和 ProxyPassReverse

具有多个位置的 nginx proxypass