有条件的 apache 虚拟主机

有条件的 apache 虚拟主机

我已经为节点应用程序添加了 Apache 代理,下面是我的配置

<VirtualHost *:80>
    ServerName main.open.co
    DocumentRoot /var/www/vhosts/maint-test
    Options -Indexes
    ErrorDocument 404 /test.html
    ProxyRequests on
    ProxyPass /test.html !
    ProxyPass / http://localhost:4130/
    ProxyPassReverse / http://localhost:4130/
</VirtualHost>

上述配置工作正常,但我想添加一个条件,如果test.html存在DocumentRoot那么它应该显示test.html,否则它应该使用ProxyPass

有人能帮我吗?

答案1

您可以改用支持代理的重写规则。我已经测试过了,它有效。

 <VirtualHost *:80>
    ServerName main.open.co
    DocumentRoot /var/www/vhosts/maint-test
    Options -Indexes
    ErrorDocument 404 /test.html
       RewriteEngine On
       RewriteCond %{REQUEST_URI} !test.html
       RewriteRule ^/(.*)$ http://localhost:4130/$1 [P,L]

       RewriteCond %{REQUEST_URI} test.html
       RewriteCond /var/www/vhosts/maint-test%{REQUEST_FILENAME} !-f
       RewriteRule ^/test.html$ http://localhost:4130/test.html [P,L]
</VirtualHost>

相关内容