2013-02-19 41 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> 
相关问题