我如何将任何ServerAliasredirect到相应的ServerName?

我想301将所有example.orgredirect到www.example.org。 下面的例子就是这样做的,但是它有很多的噪音,因此很难维护和容易出错:

<VirtualHost 192.0.2.123:80> ServerName example.org RedirectPermanent / http://www.example.org </VirtualHost> <VirtualHost 192.0.2.123:80> ServerName www.example.org DocumentRoot /usr/local/www/example </VirtualHost> 

你碰巧知道上面的整个事情是否有一些较短的版本?

像这样的伪configuration

 <VirtualHost 192.0.2.123:80> ServerName www.example.org ServerAlias example.org # Redirect-Every-ServerAlias-To-ServerName DocumentRoot /usr/local/www/example </VirtualHost> 

那么这样我只需要提供每个应该在ServerAlias下redirect的子域呢?

使用mod_rewrite,如下所示:

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.org [nocase] RewriteRule ^(.*)$ http://www.example.org$1 [last,redirect=301] 
 <VirtualHost *:80> ServerName www.example.org DocumentRoot /usr/local/www/example </VirtualHost> <VirtualHost *:80> ServerName example.org ServerAlias *.example.org another.org *.another.org Redirect 301 / http://www.example.org/ </VirtualHost> 

一定要把它们放在正确的顺序,www第一