ApacheのVirtualHostの設定を使って、設定されていないサブドメインのアクセスをメインのドメインにリダイレクトする。

ApacheのVirtualHostにおいて、設定されていないサブドメイン(サブドメインなしも含めて)にアクセスしてもメインのドメインにリダイレクトされる方法をまとめておきます。

事前知識

この設定を行うには、Apacheの以下の特性を利用します。

ApacheのVirtualHostについて、設定してあるServerNameに一致しないドメインには、一番最初の設定が適用されます。

設定方法

例として、example.comというドメインを利用していて、www.example.com(http://www.example.com)をメインのアクセスに使用するとします。

まず、example.comのDNSレコードを

a * 123.123.123.123

のように設定して、どのサブドメインのアクセスもサーバにつなぐようにします。

次にApacheのVirtualHostの設定を以下のように行います。

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName   example.com

        RewriteEngine On
        RewriteCond %{http_host} ^.*example.com
        RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
</VirtualHost>

<VirtualHost *:80>
    ServerName   www.example.com
    DocumentRoot /var/www/html/example.com/
</VirtualHost>

これで、サブドメインなしを含めた、www.example.com以外のサブドメインのアクセスは、www.example.comへリダイレクトされるようになります。

カテゴリー: サーバ・インフラのこと   タグ:   この投稿のパーマリンク

トラックバック

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>