質問: ### 前提・実現したいこと XAMPPをインストールし、Apacheの設定を色々とマニュアルを見ながら触っています `localhost`には`/xampp/htdocs`というディレクトリが割り当てられていますが、それとは別に`dev.localhost`というサブドメインを設定して、開発用のウェブサイトを作成しようとしたときに発生した疑問です ちなみに、`dev.localhost`には`/dev`ディレクトリを割り当てています ### 発生している問題・エラーメッセージ 今回この実装をするためには、VirtualHostを使えば良いとわかりました そこで、`/xampp/apache/conf/extra/httpd-vhosts.conf`にサブドメインの設定(後述)を行い、`hosts`ファイルにサブドメインと`127.0.0.1`を紐付けるように書いておき、`dev.localhost`へアクセスすると`/dev`ディレクトリの内容が表示される、ということをするため、以下のように設定を行いました ``` ServerName dev.localhost DocumentRoot "/dev" Allow from all Require all granted ``` ``` 127.0.0.1 dev.localhost ``` しかし、この状態の設定では、`localhost`にアクセスした場合と、`dev.localhost`にアクセスした場合、どちらも`/dev`ディレクトリの内容が表示されてしまいました そこで、次に`/xampp/apache/conf/extra/httpd-vhosts.conf`に以下のように`localhost`のVirtualHostの設定を行いました ``` ServerName localhost DocumentRoot "/xampp/htdocs" ServerName dev.localhost DocumentRoot "/dev" Allow from all Require all granted ``` すると、今度は`localhost`, `dev.localhost`で違うディレクトリを参照することができました そこで、質問です * `localhost`のVirtualHostの設定を行う前の設定では、なぜ上記のような動作になってしまったのでしょうか? * 上の理由について、私はVirtualHostを使う場合`httpd.conf`の内容は上書きされる、もしくは無効化されると考えました そこで、もしそうであった場合、もうひとつ質問があります `httpd.conf`の内容を上書きさせない、もしくは無効化させない方法はありますか? ### 補足情報(FW/ツールのバージョンなど) `httpd.conf`の内容は、こちらと同じ内容となっています どうぞ、よろしくお願いします
回答: localhostのVirtualHostの設定を行う前の設定では、なぜ上記のような動作になってしまったのでしょうか? =========================================================== ドキュメント https://httpd.apache.org/docs/2.4/ja/vhosts/name-based.html#using > > メインホストはなくなります > > > がそのものの説明ですが、 httpd で VirtualHost を設定した場合、 VirtualHost ディレクティブを使わずに設定してあるホストの設定は無効になり、設定ファイルに書かれている順序で一番初めの VitualHost の設定がデフォルトホストとして扱われるようになります。 httpd.confの内容を上書きさせない、もしくは無効化させない方法はありますか? ========================================== 上記の通りそういった仕様ですので、そのような方法はないと思います。 補足 その他にもドキュメントには有用な情報が書いてありますので一度は眺めてみるといいですよ。