Windows8にインストールしたXAMPPのVirtual Host設定方法とhostsを利用したServerNameの管理
名前ベースのバーチャルホストを追加
XAMPPでバーチャルホストを設定する方法について書いてみる。対象のバージョンは、XAMPP1.8.3で作業した内容を記事にした。
最初のVirtual Host
XAMPPを標準インストールすると
C:\xampp\apache\conf\extra
に
httpd-vhosts.conf
というバーチャルホストを設定するためのファイルがある。このファイルにバーチャルホストの
- servername
- port
などを設定することでVirtual Hostを追加していくことが可能。XAMPPの初期状態でhttpd-vhosts.confを開くと、コメントアウトされた説明や設定のサンプルが記載されているが、末尾に以下のバーチャルホストを設定する。
<VirtualHost *:80> ServerName dummy.local Redirect 404 / </VirtualHost>
上の設定を追加してapacheを再起動すると最初のバーチャルホストが有効化される。このバーチャルホストは、404エラーを返す設定で、
dummy.local
に限らず、VirtualHostとして設定されていないServerNameについてはすべて404エラーとして扱うための設定になる。試しに、上の設定をした上で、
localhost/xampp/splash.php
XAMPPのトップ画面へアクセスしてみる。すると404Not Foundエラーが返される。
なぜ404エラーを返すダミーホストが必要なのか?
この設定は本番環境用の設定になるので、開発環境においては必ずしも必要な設定ではない。
dummy.localを追加することで、未設定のVirtualHostへのアクセスに対しては404エラーを返すことが可能になる。
この設定が無い場合には、ランダムな文字列で構成されたServerNameで正規のVirtualHostのコンテンツを閲覧することが可能となり、HTTPステータスコード200okをレスポンスする関係上、意図しないURLでコンテンツが参照可能になるという状態になる。
そのような状態を防ぐために、VirtualHostの先頭にはダミーホストの設定が必要となる。
正規のVirtualHostをセットアップ
ダミーホストを設定したので、最初の正規VirtualHostを追加する。
<VirtualHost *:80> ServerName vhost-one.local DocumentRoot "C:/xampp/htdocs/vhost/vhost-one" DirectoryIndex index.html <Directory "C:/xampp/htdocs/vhost/vhost-one"> Require all granted </Directory> </VirtualHost>
vhost-one.localというバーチャルホストを追加した。
個人的に、htdocsの下にvhostというディレクトリを作成し、その中にバーチャルホストのコンテンツを作成するようにしている。
C:/xampp/htdocs/vhost/vhost-one
の中には暫定的なindex.htmlを作成した。この状態でapacheを再起動すれば新しいバーチャルホストは有効化されるが、
vhost-one.local
というURLでアクセスするためには、hostsファイルの設定が必要となる。Windowsの場合は、
C:\Windows\System32\drivers\etc\hosts
にhostsファイルが存在し、このファイルにipアドレスとホスト名を対応付けておくことで簡易的に名前解決をすることが可能。今回の場合は以下の一行を追加する。
192.168.0.2 vhost-one.local
ipアドレスは個々のパソコン環境で異なるので適切なものを設定する。
hostsファイルの編集は、通常はアクセス権限の設定で出来なくなっている。Windows8の場合は、一つの編集方法として、administratorアカウントでログインすることでhostsファイルの編集ができる。administratorの有効化についての記事を参照。
ここまで設定したら、
vhost-one.local
でブラウザからアクセスしてみると、DocumentRootに配置したindex.htmlのコンテンツが表示される。DocumentRootのパスが間違っていたりすると
403 forbidden error
の原因になるので注意してほしい。
vhost-oneというServerNameやDocumentRootを
vhost-two
vhost-three
といった内容で一部変更しながら複製することで、名前ベースのバーチャルホストを追加していくことができる。
XAMPPのlocalhost
上でダミーホストの設定をした関係で、localhostへのアクセスができない状態となった。XAMPPのlocalhostを再度有効化するためには
localhostというバーチャルホストを設定
することで再び有効化することができる。以下のバーチャルホストを追加する。
<VirtualHost *:80> ServerName localhost DocumentRoot "C:/xampp/htdocs" DirectoryIndex index.html index.php <Directory "C:/xampp/htdocs"> Require all granted </Directory> </VirtualHost>
C:/xampp/htdocsをDocumentRootとする、ServerNameがlocalhostのバーチャルホストをセットアップすれば、XAMPPの画面にアクセスできるようになる。
バーチャルホストの設定では、先頭にダミーホストを設定し404エラーを返すようにしておく設定が本番環境においては重要かなと考えている。開発環境でバーチャルホストを試そうとしているユーザーもその点を参考にしていただきたい。