仮想ホストのエイリアスの設定
名前ベースの仮想ホストの設定が行われている時に、登録されていないホスト名でのアクセスがあった場合を考えてみます。
例えばDNS(又はhostsファイル)の次のような記述がされていたとします。
127.0.0.1 localhost 127.0.0.1 www.adminweb.jp 127.0.0.1 www.officepro.jp
これに対して仮想ホストの設定が「www.adminweb.jp」と「www.officepro.jp」にしか行われていなかったとします。
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin dumy@adminweb.jp DocumentRoot "D:/Apache Group/Apache2.2/adminweb_docs" ServerName www.adminweb.jp CustomLog logs/adminweb.access.log common CustomLog logs/adminweb.error.log </VirtualHost> <VirtualHost *:80> ServerAdmin dumy@officepro.jp DocumentRoot "D:/Apache Group/Apache2.2/officepro_docs" ServerName www.officepro.jp CustomLog logs/officepro.access.log common ErrorLog logs/officepro.error.log </VirtualHost>
このような場合での「http://localhost/」に対してアクセスがあった場合、最初に登録されている仮想ホストの設定がデフォルトとして適用されます。
こういった時に、仮想ホストの設定が行われていないホストに対してデフォルト以外のホストの設定を適用させることが可能です。「ServerAlias」を使って仮想ホストの設定に別名として登録します。
ServerAlias ホスト名1 ホスト名2 ...
複数のホスト名を登録したい場合には空白で区切って続けて記述します。
実際のテスト
では実際に試してみます。「http://localhost/」に対するアクセスも「www.officepro.jp」の設定が適用されるように、「www.officepro.jp」に別名として「localhost」を登録します。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin dumy@adminweb.jp
DocumentRoot "D:/Apache Group/Apache2.2/adminweb_docs"
ServerName www.adminweb.jp
CustomLog logs/adminweb.access.log common
CustomLog logs/adminweb.error.log
</VirtualHost>
<VirtualHost *:80>
ServerAdmin dumy@officepro.jp
DocumentRoot "D:/Apache Group/Apache2.2/officepro_docs"
ServerName www.officepro.jp
ServerAlias localhost
CustomLog logs/officepro.access.log common
ErrorLog logs/officepro.error.log
</VirtualHost>
これで準備は完了です。Apacheを再起動してから改めて「http://localhost/」にアクセスしてみます。
今度はデフォルトの設定ではなく、エイリアスで設定が行われた「www.officepro.jp」の方の設定が適用されていることが確認できます。
( Written by Tatsuo Ikura )