カスタム検索
|
Tweet |
|
|
仮想ドメインのデフォルトホストを指定する方法
Modified: 14 July 2004
仮想ドメインを使って、1台のサーバーで複数のドメインを管理しているとき、ドメイン名の前に、別の何かをつけると、全然違うページが表示されたりします。
たとえば、"aaaaaaa.com" のページがあったとき、"www.aaaaaaa.com" のように、ドメインの前に付加すると、"bbbbbbbb.com" のように、全然違うドメインが表示されたりします。
1台のサーバーで、複数のドメインを管理するには、バーチャルドメインの機能を使って定義できます。
これは、与えられたURLをキーとして、各バーチャルドメインの "ServerName" 定義を参照し、一致するところの定義にしたがって動作します。このとき、どの定義にも合致しないとき、先頭に書いてある "ServerName" 定義を採用するようになっています。
しかし、これでは困ることがあります。一般に、バーチャルドメインは、互いに関係のないサイトと同居するので、特定のドメインで、無関係なサイトのページが表示されては困ります。
その場合、"ServerAlias" を使って定義することで、自分のサイトを表示されることができます。
以下の例で、"aaaaaaaa.com" と指定すると、後の定義が参照され、"aaaaaaaa.com" のホームページが開きますが、"www.aaaaaaaa.com" と指定すると、"bbbbbbbb.com" の定義が採用され、"bbbbbbbb.com" のホームページが開きます。
: <VirtualHost *> <-------------------先頭の定義 ServerName bbbbbbbb.com ServerAdmin tomo@bbbbbbbb.com DocumentRoot /var/www/html/bbbbbbbb.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost> <VirtualHost *> ServerName aaaaaaaa.com ServerAdmin tomo@aaaaaaaa.com DocumentRoot /var/www/html/aaaaaaaa.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost> :これは、"www.aaaaaaaa.com" に完全一致する定義がないので、先頭の定義が採用されます。
では、先頭の指定はともかく、後半が"aaaaaaaa.com" であれば、全部2番目の定義を採用させたいことがあります。そんなときは、以下のように、"ServerAlias" で指定すればOKです。
: <VirtualHost *> <-------------------先頭の定義 ServerName bbbbbbbb.com ServerAdmin tomo@bbbbbbbb.com DocumentRoot /var/www/html/bbbbbbbb.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost> <VirtualHost *> ServerName aaaaaaaa.com ServerAlias *.aaaaaaaa.com ServerAdmin tomo@aaaaaaaa.com DocumentRoot /var/www/html/aaaaaaaa.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost> :