假设有以下基于域名的虚拟主机
<VirtualHost *>
    DocumentRoot "/www/test1"
    ServerName [url]www.test1.com[/url]
     RewriteEngine     on
    RewriteCond %{HTTP_HOST}   ^test1\.com [NC]
    RewriteCond %{HTTP_HOST}   !^$
    RewriteRule ^/(.*)          [url]http://www.test1.com/[/url]$1 [L,R]
</VirtualHost>

<VirtualHost *>
    DocumentRoot "/www/test2"
    ServerName [url]www.test2.com[/url]
    RewriteEngine     on
    RewriteCond %{HTTP_HOST}   ^test2\.com [NC]
   RewriteCond %{HTTP_HOST}   !^$
    RewriteRule ^/(.*)          [url]http://www.test2.com/[/url]$1 [L,R]

</VirtualHost>

如果想要客户端输入test1.com和test2.com会直接跳转到[url]www.test1.com[/url]和[url]www.test2.com[/url]那么就必须要在第一个个虚拟主机加上serveralias test1.com,第二个虚拟主机加上serveralias test2.com,也就是加上这个一级域名。因为在浏览器输入test1.com,apache根据客户端host头来匹配虚拟主机,如果匹配到了某个虚拟主机,就会执行该虚拟主机的指令。如果未匹配到,就自动返回第一个虚拟主机的内容,即使你做了servername [url]www.test1.com[/url],但是test1.com不匹配[url]www.test1.com[/url],所以不能执行这个虚拟主机的指令。这是个误区,以为定义了servername [url]www.test1.com[/url]就 同时定义了test1.com,其实在apache里两者根本就不匹配。俺今天就犯了这个错误,跳转指令老是不执行。所以特在此备忘一下!!!!