Apache | 仮想ホスト(VirtualHost)の設定 | 仮想ホストのエイリアス設定(ServerAlias)
仮想ホストのエイリアス設定(ServerAlias)
名前ベースの仮想ホストが設定されているとき、登録されていないホスト名でアクセスされた場合にどうなるかを見てみる。
例えば、DNSまたは hosts ファイルに次のような記述があるとする。
127.0.0.1 localhost
127.0.0.1 ww1.devkuma.com
127.0.0.1 ww2.devkuma.com
これに対して、仮想ホストは ww1.devkuma.com と ww2.devkuma.com だけが設定されているとする。
<VirtualHost *:80>
ServerName ww1.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww1"
CustomLog logs/ww1.access.log common
ErrorLog logs/ww1.error.log
</VirtualHost>
<VirtualHost *:80>
ServerName ww2.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww2"
CustomLog logs/ww2.access.log common
ErrorLog logs/ww2.error.log
</VirtualHost>
この場合、http://localhost にアクセスすると、最初に登録されている仮想ホスト設定がデフォルトとして適用される。

ここでは、最初に登録された仮想ホスト ww1.devkuma.com が表示された。
このような場合、仮想ホスト設定がないホストに対して、デフォルトではないホストの設定を適用できる。ServerAlias を使用し、仮想ホスト設定にエイリアスとして登録する。
ServerAlias ホスト名1 ホスト名2 ...
複数のホスト名を登録する場合は、空白で区切って続けて記述する。
実習
それでは実際に試してみる。http://localhost/ へのアクセスにも ww2.devkuma.com の設定が適用されるように、ww2.devkuma.com に ServerAlias として localhost を登録する。
<VirtualHost *:80>
ServerName ww1.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww1"
CustomLog logs/ww1.access.log common
ErrorLog logs/ww1.error.log
</VirtualHost>
<VirtualHost *:80>
ServerName ww2.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww2"
CustomLog logs/ww2.access.log common
ErrorLog logs/ww2.error.log
ServerAlias localhost
</VirtualHost>
これで準備は完了である。Apacheを再起動した後、もう一度 http://localhost/ にアクセスしてみる。

今回はデフォルト設定ではなく、エイリアス設定された ww2.devkuma.com が表示された。