VirtualHost
私のローカルホスト(Apacheサーバー)には、異なるディレクトリを指す2つのポート80があります。
私の2つのconfファイルは次のとおりです。
<VirtualHost *:80>
ServerName localhost
DocumentRoot /home/myuser/project_1/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName project2
DocumentRoot /home/myuser/project_2/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
私の/etc/hosts
ファイルから:
127.0.0.1 localhost
127.0.1.2 project2
入力すると、ディレクトリhttp://localhost
にマップされ、ディレクトリにマップされます。ここではすべてが問題ありませんが、入力すると常にディレクトリの代わりに最初のエントリにマッピングされます。つまり、URLの代わりにマップされます。project_1
http://project2/
project_2
127.0.1.2
project_1
project_2
localhost
project2
なぜこれですか?どのように逆マッピングを行うことができますか?
答え1
仮想ホスト構成は、指定された名前ベースの仮想ホストを使用しますServerName
。つまり、クライアント要求の「Host」ヘッダーが一致した場合にのみ構成がロードされます。 Apacheが要求されたホストを設定された仮想ホストと一致させることができない場合、Apacheのデフォルトの動作は、見つかった最初の設定された仮想ホストをロードすることです。
正しいコンテンツを取得するにはいくつかのオプションがあります。そのうちの1つは、ServerName
アクセスしたいコンテンツと一致するようにリクエストの「Host」ヘッダーを調整することです。別の方法は、IPアドレスをaとして追加することです。ServerAlias
あるいは、IPベースの仮想ホストに切り替えてそのように設定することもできます。