XAMPP バーチャルホストの設定

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エラーが返される。

xampp-notfound

なぜ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エラーを返すようにしておく設定が本番環境においては重要かなと考えている。開発環境でバーチャルホストを試そうとしているユーザーもその点を参考にしていただきたい。

Webエンジニアブログにコメント

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

XAMPP バーチャルホストの設定の記事にコメントを投稿