mod_vhost_aliasとmod_rewriteの併用

mod_vhost_aliasでサブドメイン動的生成はサブドメイン運用の負担を軽減します。

<VirtualHost *:80>
    ServerAdmin info@example.com
    ServerName example.com
    ServerAlias *.example.com
    VirtualDocumentRoot /home/%2/public_html/%1
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
</VirtualHost>

ではexample.comへのアクセスをwww.example.comにリダイレクトするにはどうしたらいいのでしょうか?ServerAliasではexample.comとwww.example.comで同じものを表示するという設定になってしまうのでSEO的にあまりよろしくありません。こういった場合はmod_rewriteを併用します。 mod_vhost_aliasのVirtualDocumentRoot指定はそのままで、example.comへのアクセスはwww.example.comにリダイレクトするという条件をmod_rewriteで以下のように書きます。

<VirtualHost *:80>
    ServerAdmin info@example.com
    ServerName example.com
    ServerAlias *.example.com
    VirtualDocumentRoot "/home/%2/public_html/%1"
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^example.com$
    RewriteRule ^(.*)$ http://www.%0$1 [R=301,L]
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
</VirtualHost>