質問編集履歴

1 少し文章が変だと感じたため、一部の文章を変更しました。

KarakuriHirose

KarakuriHirose score 6

2018/08/30 08:33  投稿

VirtualHostを使うとhttpd.confの内容が無効になる?
### 前提・実現したいこと
XAMPPをインストールし、Apacheの設定を色々とマニュアルを見ながら触っています
ちなみに、`dev.localhost`には`/dev`ディレクトリを割り当てています
### 発生している問題・エラーメッセージ
今回この実装をするためには、VirtualHostを使えば良いとわかりました
そこで、`/xampp/apache/conf/extra/httpd-vhosts.conf`にサブドメインの設定(後述)を行い、`hosts`ファイルにサブドメインと`127.0.0.1`を紐付けるように書いておき、`sub.localhost`へアクセスすると`/dev`ディレクトリの内容が表示される、ということをするため、以下のように設定を行いました
そこで、`/xampp/apache/conf/extra/httpd-vhosts.conf`にサブドメインの設定(後述)を行い、`hosts`ファイルにサブドメインと`127.0.0.1`を紐付けるように書いておき、`dev.localhost`へアクセスすると`/dev`ディレクトリの内容が表示される、ということをするため、以下のように設定を行いました
```vhostsconf
<VirtualHost *:80>
   ServerName dev.localhost
   DocumentRoot "/dev"
   <Directory "/dev">
       Allow from all
       Require all granted
   </Directory>
</VirtualHost>
```
```hosts
127.0.0.1      dev.localhost
```
しかし、この状態の設定では、`localhost`にアクセスした場合と、`dev.localhost`にアクセスした場合、どちらも`/dev`ディレクトリの内容が表示されてしまいました
そこで、次に`/xampp/apache/conf/extra/httpd-vhosts.conf`に以下のように`localhost`のVirtualHostの設定を行いました
```vhostsconf
<VirtualHost *:80>
   ServerName localhost
   DocumentRoot "/xampp/htdocs"
</VirtualHost>
<VirtualHost *:80>
   ServerName dev.localhost
   DocumentRoot "/dev"
   <Directory "/dev">
       Allow from all
       Require all granted
   </Directory>
</VirtualHost>
```
すると、今度は`localhost`, `dev.localhost`で違うディレクトリを参照することができました
そこで、質問です
- `localhost`のVirtualHostの設定を行う前の設定では、なぜ上記のような動作になってしまったのでしょうか?
- 上の理由について、私はVirtualHostを使う場合`httpd.conf`の内容は上書きされる、もしくは無効化されると考えました
そこで、もしそうであった場合、もうひとつ質問があります
`httpd.conf`の内容を上書きさせない、もしくは無効化させない方法はありますか?
### 補足情報(FW/ツールのバージョンなど)
`httpd.conf`の内容は、[こちら](https://gist.github.com/rukku/3411602)と同じ内容となっています
どうぞ、よろしくお願いします
  • Apache

    3191 questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • XAMPP

    1175 questions

    XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る