Apache:将VirtualHostdynamic域和子域指向不同的文件夹

目前我有2个VirtualHosts:

<VirtualHost *:80> ServerName *.*.comp1.office1.lan VirtualDocumentRoot /var/www/%-4/%-5/ UseCanonicalName Off <Directory /var/www/> Options Indexes FollowSymLinks -MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

 <VirtualHost *:80> ServerName *.comp1.office1.lan VirtualDocumentRoot /var/www/%-4/ UseCanonicalName Off <Directory /var/www/> Options Indexes FollowSymLinks -MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

folder.site.comp1.office1.lan resolvs这样的域( /var/www/site/folder/ )。 但在请求site.comp1.office1.lan我recive 404错误。

而Apache会logging下这一行:

 [time...] [error] [client my.ip.there] File does not exist: /var/www/site/_ 

如果我更改虚拟主机的加载顺序(第二个在第一个之前加载)比site.comp1.office1.lan工作上帝,但与404响应的问题去folder.site.comp1.office1.lan

你通常不会在一个虚拟主机的ServerName条目中使用通配符,你通常会把它们放在一个ServerAlias指令中。 尝试一下

 ServerName comp1.office.lan ServerAlias *.*.comp1.office.lan ... 

您可能必须configurationServerName,以使它们全都不同,并使vhost名称与ServerAlias相匹配。