エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法

      2023/12/28

XAMPPでバーチャルホスト/バーチャルドメインを設定するとは?

 

XAMPPとは?

 
XAMPPとは、LAMP環境(Linux、Apache、MySQL、PHP、Perl)の環境を簡単に作成し、PHP、Perlのプログラム開発、学習を行うための便利なアプリケーションです。
 
ちなみに、XAMPPは「ザンプ」と呼びます。
 
XAMPPオフィシャルサイト
 https://www.apachefriends.org/jp/index.html
 
 
XAMPPを結構長い間使っていましたが、ローカルの実験環境として使っていたため、細かな設定を気にすることがなかったのですが、このたび、XAMPPもバーチャルホストの設定を行うことができることを知りましたので、その設定についてご紹介します。
 
 

VirtualHost(バーチャルホスト/バーチャルドメイン)とは?

 
VirtualHost(バーチャルホスト/バーチャルドメイン)とは、1つのサーバで複数のドメインを運用するための技術です。
 
例えば、「aaa.com」として設定している Webサーバに対して、「bbb.com」というドメインのサイトも同居させよう、とする場合に必要になる技術で、このバーチャルドメインの技術によって、1つのサーバ(Apache)の中に複数のドメインのサイトを運営させることができるようになります。
 
 
XAMPPはローカル環境として使うことが多いため、複数のドメインが設定できることは関係ない、と思うかもしれませんが、このバーチャルドメインの設定をすることで、複数のドキュメントルートを持つ環境を構築することができます。
 
例えば、バーチャルドメインを設定しない場合に複数のサイトを構築する場合は、下記の様にサブフォルダ形式で構築をする必要があります。
 http://localhost/aaa/
 http://localhost/bbb/
 
ですが、バーチャルドメインの設定をすることで、下記の様にそれぞれをドキュメントルートとして環境構築をすることができ、ドキュメントルートからのパスなどを本番環境と同じにすることができる、といったメリットを享受できるようになります。
 http://aaa.localhost/
 http://bbb.localhost/
 
 
ちなみに、バーチャルホスト、バーチャルドメイン、マルチドメイン、仮想ホストなどは、言葉は違いますが同じ技術を指しています。
 
 

IPベースバーチャルホスト/名前ベースバーチャルホスト

 
バーチャルホストには、大きく分けて、「IPベースバーチャルホスト」と「名前ベースバーチャルホスト」があります。
 
IPベースバーチャルホストは、ドメインごとに IPアドレスを用意し、1つのサーバに複数の IPアドレスを設定することで実現する方法です。
 
対して、名前ベースバーチャルホストは、1つの IPアドレスに対して複数のドメインを設定する方法です。
 
IPベースバーチャルホストは、IP層でドメインの判別が可能なため汎用性が高いのですが、IPアドレスの取得はコストがかかるため、明確な目的がある場合以外は「名前ベースバーチャルホスト」を選択することになるでしょう。
 
 

XAMPPにバーチャルホストを設定する方法

 
XAMPPにバーチャルホストを設定する方法として、「名前ベースバーチャルホスト」を設定する方法を解説します。
 
名前ベースバーチャルホストの設定にもいくつか方法がありますが、下記の 2つの方法を解説します。
 

 
 
 

ポートにサイトを割り当てる方法

 
ポートにサイトを割り当てる方法です。
 
下記のようにポート付きの URLでアクセスする方法です。
 http://localhost:8081
 
設定方法も簡単ですので、おすすめの方法です。
 
 

1.httpd-vhosts.confを編集

 
httpd-vhosts.confを編集します。
 
XAMPPのコントロールパネルからは選択することができませんので、直接下記のパスのファイルを探して編集します。
 C:¥xampp¥apache¥conf¥extra¥httpd-vhosts.conf
 
編集する内容は、以下になります。
この内容を「httpd-vhosts.conf」の一番最後に追記をします。
 

 
1行目、2行目の「8081」がポート番号を指定する箇所になります。
ポート番号は「0」~「65535」まであり、他のプロトコルで使用していないポート番号であれば何番でもいいのですが、HTTPの標準ポート「80」に対して「80」を重ねる「8080」、そこから番号を増やしていく「8081」「8082」「8083」としていくことが多いような気がします。
 
また、「DocumentRoot」のパスは、ドキュメントルートにするフォルダまでのパスを指定します。
 
 

2.XAMPPの Apacheを再起動

 
前項で設定した内容を反映させるため、XAMPPのコントロールパネルから、Apacheを再起動します。(「Stop」ボタンで Apacheを止めて、「Start」ボタンで起動させます。)
 
 

3.設定の反映を確認

 
設定した内容が正しく反映されているかを確認するため、下記の URLにアクセスし、ページが表示されるかどうかを確認します。
 http://localhost:8081
 
 
正しく表示されず、エラーが発生した場合は、後述の「XAMPPのバーチャルホスト設定でエラーが発生した場合の確認項目」で解説をしていますのでそちらを見てください。
 
 
 

hostsを利用してドメインを割り当てる方法

 
hostsを利用してドメインを割り当てる方法です。
 
 http://example.com
のように、ドメインを当てることができます。
WordPressのようにドメインも含めてシステムで管理されているようなサイトを構築する場合に役に立ちます。
 
 
ただし、「XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法」の記事で解説しているように、80番ポートがバッティングするなどの理由で XAMPP自体を 80番ポート以外で運用している場合は、下記のようなポート番号付きの URLになることは避けられません。
 http://example.com:8080
 
 

1.httpd-vhosts.confを編集

 
httpd-vhosts.confを編集します。
 
XAMPPのコントロールパネルからは選択することができませんので、直接下記のパスのファイルを探して編集します。
 C:¥xampp¥apache¥conf¥extra¥httpd-vhosts.conf
 
編集する内容は、以下になります。
この内容を「httpd-vhosts.conf」の一番最後に追記をします。
 

 
先の「ポートにサイトを割り当てる方法」と比較すると、1行目が「NameVirtualHost」になっています。
1行目、2行目のポート番号は、標準の 80番ポートを想定しています。
 
加えて、4行目に「ServerName example.com」が追加されています。
4行目に設定したいドメイン名を指定します。
ここは、ドメイン名を編集しますが、ローカル環境ですので、ドメインの形式をしていない「localhost2」などでも OKです。
 
 
ちなみに、「XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法」で記事を書いているように、XAMPPを 80番ポートと違うポート番号で動作させている場合は、下記のような設定になります。
 

 
こちらは、「8080」番ポートを使用して XAMPPを動かしている場合の想定ですが、1行目、2行目の「80」を「8080」に変更します。
 
 

2.hostsを編集

 
hostsを編集します。
 
hostsは、下記のファイルになります。拡張子はありません。
C:¥Windows¥System32¥drivers¥etc\hosts
 
下記の内容を「hosts」の最後に追記をします。
 

 
 
hostsについて詳しく知りたい方は、下記の Google検索を見てください。
https://goo.gl/87X5vz
 
 

3.XAMPPの Apacheを再起動

 
前項で設定した内容を反映させるため、XAMPPのコントロールパネルから、Apacheを再起動します。
 
 

4.設定の反映を確認

 
設定した内容が正しく反映されているかを確認するため、下記の URLにアクセスし、ページが表示されるかどうかを確認します。
 http://example.com
 
 
最初に説明しましたが、そもそもの XAMPPを 80番ポート以外で利用している場合は、ポート付きの URLでアクセスをします。
 http://example.com:8080
 
 

注意:hostsを利用してドメインを割り当てる方法の注意点 2023.12.28 追記

 
上記の説明にはやや不足があります。
 
上記の設定だけを行うだけでは、元の
 http://localhost:8094/
でのアクセスが出来なくなります。
 
そのため、新しく設定する際に元の設定も記述しておく必要がある。
 
 
複数のサイトを設定している場合、元の設定も記述しておく必要があります。
 
 C:/xampp/htdocs/htdocs-a
 C:/xampp/htdocs/htdocs-b
 C:/xampp/htdocs/htdocs-c
 C:/xampp/htdocs/htdocs-8080-1
 C:/xampp/htdocs/htdocs-8080-2
 C:/xampp/htdocs/htdocs-8080-3
 
例えば、上記のフォルダを設置しており、それぞれ下記でアクセスをしたい場合を想定します。
 
 http://localhost:8080/htdocs-a
 http://localhost:8080/htdocs-b
 http://localhost:8080/htdocs-c
 http://example-1.com:8080
 http://example-2.com:8080
 http://example-3.com:8080
 
この場合、「httpd-vhosts.conf」に設定する内容は下記となります。
 

 
 
重要なポイントは、一番最初の「C:/xampp/htdocs/」の設定です。
 
最初の「localhostの設定」をしていないと「http://localhost:8080」でのアクセスができなくなります。
「httpd-vhosts.conf」の設定をしていないときは「http://localhost:8080」でアクセスしたときは「C:/xampp/htdocs/」にアクセスすることがデフォルトの設定となります。
ですが、「httpd-vhosts.conf」に他の設定をすると、デフォルトの設定が上書きされるため、「httpd-vhosts.conf」を記述するときはデフォルトの設定も明記する必要が発生するということですね。
 
 
 

XAMPPのバーチャルホスト設定でエラーが発生した場合の確認項目

 

XAMPPの Apacheが起動しない

 
「httpd-vhosts.conf」を変更した場合は、XAMPPの Apacheの再起動が必要ですが、Apacheが起動しなくなる、という不具合もよく見かける不具合です。
 
多くの場合は、下記のいずれかです。
・「httpd-vhosts.conf」に記述した文法が間違っている
・設定したポートがバッティングしている
 
前者は、「VirtualHost」の綴りを間違えていたり、クォーテーションが閉じられていなかったり、といった単純なミスが多くあります。
 
後者の場合は、「8081」などと設定したポートを他のアプリケーションが利用していてバッティングしている場合があります。
ポート番号を違うものに変えて試してみてください。
 
 

「Object not found!」が出る

 
01_XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
 
この「Object not found!」が出るときは、「httpd-vhosts.conf」に指定した「DocumentRoot "C:/xampp/htdocs/htdocs-8081"」のフォルダのパスが間違っている場合があります。
 
パスを変更するか、パスの場所にフォルダを作成するかして改めて確認をしてみてください。
「httpd-vhosts.conf」を変更した場合は、XAMPPの Apacheの再起動が必要です。
 
 

「正常に接続できませんでした」が出る

 
02_XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
 
「正常に接続できませんでした」が出るときは、「httpd-vhosts.conf」に設定する 1行目の「Listen 8081」が抜けている場合も多々あります。
こちらの抜けがないか確認をしてみてください。
 

 
ちなみに、「Listen 8081」の記述は、「C:\xampp\apache\conf\httpd.conf」に記述する方法もあります。
ただ、バーチャルホストの設定をひとまとめにする、という意味で「httpd-vhosts.conf」に編集する方が無難であろうと思います。
 
 

「Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0」が出る

 

 
HTMLファイルを表示したときは問題なかったけれど、PHPのファイルにアクセスしたら上記のようなエラーが表示された、というエラーが発生する場合があります。
 
これは、バーチャルホストを設定したパスに日本語(マルチバイト文字、全角文字)が使われているために発生しているエラーです。
 
バーチャルホストのパスに設定ていなくても、下記の様に URLの途中のフォルダに日本語が使われている場合も同様のエラーが発生します。
 http://localhost:8081/あ/index.php
 
フォルダ名に日本語(マルチバイト文字、全角文字)を使っている場合は、半角英数字に変更しましょう。
 
 
この不具合は、XAMPPを動かしている OSの文字コードと PHPの文字コードが一致しないことによるエラーです。
そのため、XAMPPを動かしている OSの文字コードと PHPの文字コードを一致させる対応などを行うことで、日本語を使っていても正しく動くようにすることはできるであろうと思います。
実際に試していませんので、どれくらいの手間なのかは分かりませんが...
 
 

XAMPPにバーチャルホストを設定する方法のまとめ

 
ローカル環境の XAMPPにバーチャルホスト(バーチャルドメイン)を設定する方法を 2つ紹介しました。
 
単純にドキュメントルートを確保するためにバーチャルホストを設定するならば、1つ目に紹介した「hostsを利用してドメインを割り当てる方法」が簡単です。
 
ドメインを設定する必要がある場合は「hostsを利用してドメインを割り当てる方法」がありますが、ポート番号なしでアクセスしたい場合は、80番ポートを使用している他のアプリ側のポート番号を変更する必要がでてきますね。
 
その他、XAMPPに関しては下記の記事を書いていますので、あわせて参考にしてください。
 
 

XAMPPの関連記事

XAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
XAMPPとは?パソコンにローカル LAMP環境を簡単に設置する方法を詳細解説
XAMPPにVirtualHostを設定しドメイン、ドキュメントルートを設置する方法
XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法
MySQLのタイムゾーン(mysql_tzinfo_to_sql)の設定方法・XAMPP環境の解説も
XAMPPのWordPressの更新でFatal error: Maximum execution time of 30 seconds exceededのエラーが発生して失敗する場合の対処方法
XAMPP環境で WP-DBMANAGERでの復元でDBが壊れる
XAMPPの Apacheが起動しなくなった場合の対処方法
XAMPP環境(ローカル環境)の sendmailからPHPメールを送信する設定方法
PHPを勉強するための環境を構築するにはXAMPPが最適
 
その他の「xampp」に関する記事一覧
 
 

 - システム開発関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

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

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

PHPを勉強するための環境を構築するにはXAMPPが最適

PHPを勉強する環境としてローカル環境を構築するには XAMPPが最適。その解説です。

ロリポップで非常に大きなハッキング騒動がありました。

ロリポップで非常に大きなハッキング騒動がありました。その結果、影響を受けた内容と、それに対してどう対応したか、のレポートです。加えて、何でロリポップサーバを使っているかの紹介です。

Windowsで環境変数のパスの設定方法解説。不具合時のチェックポイントも紹介
Windowsで環境変数のパスの設定方法解説。不具合時のチェックポイントも紹介

Windowsで環境変数であるパス(path)の設定方法の解説。標準的な解説に加え、うまくいかない場合のチェック方法や別の設定方法の解説も。うまく設定できない状況は極力なくなるはず。

XAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法
XAMPP本体や PHPのバージョンアップをせずにもう一つXAMPPをインストールして複数の環境を共存させる方法

パソコンに簡単に LAMP環境を構築することができるパッケージソフト「XAMPP」。XAMPPのバージョンアップや、PHPのバージョンに合わせて複数の環境を構築する場合の手順を解説。

01__Windowsで .htaccessファイルを生成する方法を 5つ紹介
Windowsで .htaccessファイルを生成する方法を 5つ紹介

Windowsでは .htaccessファイルを生成するのは簡単ではない。その原因といくつかの生成方法を解説。新しくファイルを作る場合は「名前をつけて保存」すれば簡単。

XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法
XAMPPのApacheが起動しない!ポート番号の変更でバッティングの解消方法

XAMPPを起動する際、Apacheのポートがバッティングして起動しない場合がある。XAMPP側のポートを変更する方法、バッティングしているプログラムを変更する方法の2種類の対応方法を解説。

Windows 10パソコンで日付、時間がずれる!原因と時計を合わせる解決方法
Windows 10パソコンで日付、時間がずれる!原因と時計を合わせる解決方法

Windows 10のパソコンでスリープから復帰すると日付がズレる不具合が発生。その時の対応方法の時計の設定やマザーボードの電池の交換の方法を紹介。プラスαの不具合の原因と対応方法を紹介。

Windowsに接続したBluetoothキーボード、マウスの突然動かない!つながらない!問題
Windowsに接続したBluetoothキーボード、マウスの突然動かない!つながらない!問題

Bluetooth機器がつながらなくなった!そんなときの対応方法についての解説。Bluetooth接続の電源を勝手にOFFにしないようにする設定を中心に、その他の不具合とその対処方法についても紹介。

RSA暗号の仕組みがすっきりと分かった瞬間

RSA暗号の仕組みがすっきりと分かったその説明を交えながら、RSA暗号の解説をします。

WindowsXPから Windows7にアップグレードして分かったこと

WindowsXPから 7にアップグレードする際に不安だったバックアップ、ドライバ、32Bit版 64Bit版について書いています。