在 VirtualHost 服务器名称中使用目录

Using directory in VirtualHost server name

这就是我想要完成的事情:

  1. 如果服务器名称是 www.mynewapp.com 代理通道或文档根应该是 http://localhost:8080/mynewapp/

  2. 如果服务器名称是www.mynewapp.com/app,代理通道或文档根应该是http://localhost:8080/app

但由于服务器名称不能包含目录(www.mynewapp.com/app),我无法弄清楚。如果我使用 Alias '/app',即使 www.mynewapp.com 也会转到文档根目录的 /app 版本。

我当前的虚拟主机如下所示:

<VirtualHost *.80>
    ServerName www.mynewapp.com
    ProxyPreserveHost On
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/mynewapp/
    ProxyPassReverse / http://localhost:8888/mynewapp/
</VirtualHost>

这适用于第 1 点。我尝试使用 RewriteRules 来涵盖这两种情况:

<VirtualHost *.80>
    ServerName www.mynewapp.com
    ProxyPreserveHost On
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/

    RewriteEngine On
    RewriteRule "^/app/(.*)$" "/app/"
    RewriteRule "^/(.*)$" "/mynewapp/"
</VirtualHost>

但我无法正确使用正则表达式。感谢任何帮助,无论是通过正则表达式还是通过创建 2 个不同的虚拟主机来解决这两点。

它应该很简单:

<VirtualHost *.80>
    ServerName www.mynewapp.com
    ProxyPreserveHost On
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass /app http://localhost:8888/app
    ProxyPassReverse /app http://localhost:8888/app
    ProxyPass / http://localhost:8888/mynewapp/
    ProxyPassReverse / http://localhost:8888/mynewapp/
</VirtualHost>