Apache虚拟主机与通配符DNSlogging

这是我目前的设置:

httpd.conf的底部,我有以下几点:

 NameVirtualHost *:80 Include /etc/httpd/conf/vhosts/* 

/etc/httpd/conf/vhosts我有以下文件:

mainsite.com.conf:

 <VirtualHost *:80> DocumentRoot "/var/www/vhosts/mainsite.com" ServerName mainsite.com ServerAlias www.mainsite.com <Directory "/var/www/vhosts/mainsite.com"> allow from all Options -Indexes </Directory> </VirtualHost> 

sub1.mainsite.com.conf:

 <VirtualHost *:80> DocumentRoot /var/www/vhosts/sub1.mainsite.com ServerName sub1.mainsite.com <Directory "/var/www/vhosts/sub1.mainsite.com"> allow from all Options -Indexes </Directory> </VirtualHost> 

到现在为止还挺好! mainsite.comwww.mainsite.com共享相同的DocumentRoot (稍后我可以将所有的www.mainsite.com用户redirect到mainsite.comsearch引擎优化)。 sub1.mainsite.com也有自己的DocumentRoot ,不会干扰其他任何事情。

但是, <Anything that isn't www or sub1>.mainsite.com获得与<Anything that isn't www or sub1>.mainsite.com相同的DocumentRoot 。 我更希望的是一个错误页面出现任何主机,不匹配VirtualHost

而现在的实际问题是:我可以调整什么以获得预期的效果? 另外, VirtualHost之间通用的目录规则是否可以重构为httpd.conf ? 如果是这样,我会做一些像下面这样的事情吗?

 <Directory "/var/www/vhosts"> allow from all Options -Indexes </Directory> 

 <VirtualHost *:80> ServerAlias *.mainsite.com ... ... </VirtualHost> 

应该抓住没有其他定义的东西。

我使用最后被读取的catchall虚拟主机定义

 <VirtualHost *:80> ServerName default ServerAlias * DocumentRoot /var/www/default ErrorDocument 404 /404.html <Directory "/var/www/default"> Options All AllowOverride None allow from All </Directory> </VirtualHost> 

默认的index.html文件告诉用户在提供的地址处有注意。 404.html文件一样。