虚拟主机redirect不存在的子域名

我有这个在我的虚拟主机文件,它指示所有不存在的主要www的子域。

<VirtualHost *:80> ServerName mysite.com ServerAlias *.mysite.com Redirect 301 / http://www.mysite.com/ </VirtualHost> 

我现在的问题是有些人通过www.mysite.com.链接到我的网站www.mysite.com. 注意. 最后。 这导致CMS中断。

有没有一种方法来修改此ServerAlias或另一种方式,以便它有一个通配符? 我试着添加一个*但这没有奏效。

这是这个域的完整的虚拟主机:

 # DEV <VirtualHost *:80> ServerName dev.mysite.com DocumentRoot /var/www/mysite.com/subdomain/dev/public ErrorLog /var/log/apache2/mysite.com-error.log LogLevel warn CustomLog /var/log/apache2/mysite.com-access.log combined </VirtualHost> <VirtualHost *:80> ServerName www.mysite.com DocumentRoot /var/www/mysite.com/public <Directory /var/www/mysite.com/public> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] ErrorDocument 404 index.php </Directory> <Directory /var/www/mysite.com/public/webapp> RewriteEngine Off <Files *> order allow,deny deny from all </Files> <FilesMatch "\.(png|gif|jpe?g|css|js|swf|flv|htc|eot|woff|ttf|svg)$"> order allow,deny allow from all </FilesMatch> </Directory> <Directory /var/www/mysite.com/public/webapp/shared> <Files *> order allow,deny allow from all </Files> </Directory> ErrorLog /var/log/apache2/mysite.com-error.log LogLevel warn CustomLog /var/log/apache2/mysite.com-access.log combined </VirtualHost> # Redirect for non existent subdomains <VirtualHost *:80> ServerName mysite.com ServerAlias *.mysite.com Redirect 301 / http://www.mysite.com/ </VirtualHost> 

我已经禁用.htaccess所有的<Directory>的原因

如果这个虚拟主机是第一个,你不需要 ServerAliases。

首先列出的虚拟主机将按照定义接收与特定虚拟主机的ServerName不匹配的所有请求。

删除ServerAlias,并确保这个虚拟主机先加载。