0

我最近向我的 apache 添加了一个虚拟主机配置,它使用 mod_vhost_alias 将请求路由到类似域的目录。如果目录存在,一切正常。现在我的想法是,当我调用一个路由到我的 apache 的域,但不存在相应的虚拟文档根时,该请求将由默认主机处理。但事实并非如此。有没有不使用 mod_rewrite 的解决方案?

这是我的动态主机配置:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    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 webmaster@localhost

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

2 回答 2

0

认为您必须先加载所有〜正常〜虚拟主机,然后再加载 mod_vhost_alias

于 2013-04-18T12:33:46.940 回答
0

您可以尝试在您的 vhost 中添加一个 IF 模块以检查该文件夹是否存在,如果不存在,则重定向到另一个文件夹。尝试这样的事情:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ path/to/redirect/to [QSA,L]
</IfModule>
于 2014-04-25T07:25:03.320 回答