2013-02-19 53 views
0

我最近增加了一個虛擬主機配置給我的apache,它使用mod_vhost_alias將請求路由到域名目錄。如果目錄存在,一切正常。現在我的想法是,當我調用一個路由到我的apache的域,但不存在相應的虛擬文檔根目錄時,請求將由默認主機處理。但它不是。有沒有解決方案來做到這一點,而不使用mod_rewrite?如何使用mod_vhost_alias而不使用mod_rewrite獲取默認主機工作?

這是我的動態主機配置:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerAlias * 

    UseCanonicalName Off 

    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon 
    CustomLog /var/log/apache2/dhost_access.log vcommon 

    VirtualDocumentRoot /var/www/%0 
    VirtualScriptAlias /var/www/%0 
</VirtualHost> 

這是我的默認主機:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www 
    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 
    <Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
      AllowOverride None 
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
      Order allow,deny 
      Allow from all 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

回答

0

認爲你必須加載所有〜正常〜虛擬主機,再mod_vhost_alias之後

0

您可以嘗試在虛擬主機中添加一個IF模塊以檢查文件夾是否存在,如果不存在,則重定向到另一個文件夾。試試這樣的:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ path/to/redirect/to [QSA,L] 
</IfModule> 
相關問題