从虚拟主机中排除正则表达式

从虚拟主机中排除正则表达式

我在 apache 中有一个虚拟主机,它将请求重定向到另一个 Web 服务器。

<VirtualHost *:80>
    DocumentRoot /var/www
    ServerName another.host
    ProxyPass        /  http://another.host2:8081/
    ProxyPassReverse /  http://another.host2:8081/
</VirtualHost>

我需要排除此虚拟主机捕获的 URL 模式。基本上,我不希望收到带有以下 URL 的请求:http://another.host:8081/~用户名转发至其他服务器。

这能做到吗?

答案1

是也不是。

不可以,因为您不能排除某些内容与 VirtualHost 的匹配;任何与主机名匹配的内容将始终附加到该 VirtualHost。

是的,您可以获得您想要的行为,通过让您的ProxyPass行为只发生在您不想本地提供服务的位置。

尝试这样的操作:

<VirtualHost *:80>
    DocumentRoot /var/www
    ServerName another.host
    <Location />
        Order deny,allow
        Allow from all
    </Location>
    <LocationMatch "^/[^~]">
        ProxyPass        /  http://another.host2:8081/
        ProxyPassReverse /  http://another.host2:8081/
    </LocationMatch>
</VirtualHost>

相关内容