Exclude an alias from virtualhost proxypass

Posted on Jan 24, 2022

Question

I've following virtual host configuration. The desired result is:

  1. If someone requests http://test.myserver.com/myapp, apache serves him from /var/www/myapp
  2. And if http://test.myserver.com/ is requested, apache redirects it to port 8069.

2nd is working but 1st is not. Can someone help please!

<VirtualHost *:80>
        ServerName test.myserver.com
    Alias /myapp /var/www/myapp
    &lt;Directory /var/www/myapp&gt;
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            Allow from all
    &lt;/Directory&gt;

    ProxyPass / http://localhost:8069/
    ProxyPassReverse / http://localhost:8069/

</VirtualHost>

Answer

This is how I was able to achive the desired outcome. Following is the working configuration where ProxyPassMatch ^/myapp ! did the trick and except the (server-address)/myapp, all the requests are being proxying to the other server which is open-erp running at port 8069:

<VirtualHost *:80>
        ServerName test.myserver.com
    Alias /myapp /var/www/myapp
    &lt;Directory /var/www/myapp&gt;
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            Allow from all
    &lt;/Directory&gt;

    ProxyPassMatch ^/myapp !
    ProxyPass / http://localhost:8069/
    ProxyPassReverse / http://localhost:8069/

CustomLog /var/log/apache2/access.log common ErrorLog /var/log/apache2/error.log

</VirtualHost>