虚拟主机将不存在的子域redirect到www

我知道有很多不同的方法来redirect使用Apache,但我想检查这是否是通过虚拟主机做到这一点的正确方法?

<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example/public <Directory "/var/www/example/public"> Options +FollowSymlinks # Prevent Direct Access to files <FilesMatch "\.(tpl|ini|log)"> Order deny,allow Deny from all </FilesMatch> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] </Directory> <Directory "/var/www/example/public/admin/view/javascript/ckeditor"> AddType application/x-javascript .js AddType text/css .css AddType text/xml .xml </Directory> ErrorLog /var/log/apache2/example-error.log LogLevel warn CustomLog /var/log/apache2/example-access.log combined </VirtualHost> # Redirect for all non existent subdomains <VirtualHost *:80> ServerAlias *.example.com Redirect 301 / http://www.example.com </VirtualHost> 

我会使用文本参数permanent而不是Redirect的数字状态301 (或首先使用RedirectPermanent )。 但那只是化妆品。

否则,你的configurationredirect任何子域!= www到你的规范url就好了。