mod_vhost_aliasとmod_rewriteの併用
Created: 3/17/2009, 12:00:00 AM
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>