これはおそらく尋ねられたでしょうが、私は正解を見つけることができないか、または私が見つけた答えが機能しません。
1つのドメインmydomain.comがあり、IPに解決しています。それを8.8.8.8と呼びましょう。 DNS設定は、2つのサブドメインがAレコードを使用してそのIPアドレスを指すようにします。これらはdev.mydomain.comとstaging.mydomain.comです。どちらにも8.8.8.8を指すAレコードがあります。
サーバー(8.8.8.8)に2つの仮想ホストファイルがあります。これらは次のとおりです。
staging.mydomain.com.conf
<VirtualHost *:80>
ServerName staging.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
そして...
dev.mydomain.com.conf
<VirtualHost *:80>
ServerName dev.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
問題は:
http://staging.mydomain.comまたはhttp:// devにアクセスするかどうかに関係なく.mydomain.com、私は常にstaging.mydomain.comに到達します(Apacheはこれらのファイルを提供します)。
Apacheとサーバーを再起動しました。 devが最初になるように.confファイルの順序を変更すると、常にそれが表示されます。任意の提案をいただければ幸いです。ありがとう!
私は再びこの問題に立ち返ります!構文が正しいことを知っている場合、シンボリックリンクが正しくない可能性があります。それを削除して再度作成し、その間にApacheを再起動します。私はこれをやっただけで、何時間も頭を悩ませていました。 CentOS
では、httpd -S
を使用して使用可能なvhostを確認できます
この問題は、仮想ホストのApachelogファイルが存在しないか、書き込み可能でない場合にも発生することがわかりました。
NameVirtualHost
ディレクティブ を設定に追加する必要があるようです。
NameVirtualHost *:80
状況によっては、Apacheが*:80
VirtualHostsを正しく処理できない場合があります。これらの場合、特定のIPに直接VirtualHostsをマッピングする必要があります。
NameVirtualHost 8.8.8.8:80
<VirtualHost 8.8.8.8:80>
ServerName staging.mydomain.com
ServerAlias stage.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
<VirtualHost 8.8.8.8:80>
ServerName dev.mydomain.com
ServerAlias development.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
apachectl -t -D DUMP_VHOSTS
を実行して、ApacheがVirtualHost構成を解析する方法を確認することもできます。
更新:コメントで述べたように、通常はNameVirtualHost *:80
を使用できます。したがって、ほとんどの場合、仮想ホストを次のように構成できます。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName staging.mydomain.com
ServerAlias stage.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
<VirtualHost *:80>
ServerName dev.mydomain.com
ServerAlias development.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>