Apache-2.2

有條件的apache虛擬主機

  • December 10, 2015

我為節點應用程序添加了一個 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

誰能幫我解決這個問題?

您可以改用具有代理支持的重寫規則。我已經對此進行了測試,並且可以正常工作。

<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>

引用自:https://serverfault.com/questions/742129