我最近在我的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>
答案 0 :(得分:0)
我想你必须首先加载所有~normal~vhosts,然后再加载mod_vhost_alias
答案 1 :(得分: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>