▽1
●
studiocherry ベストアンサー |
Apache であれば、ネームバーチャルホストが有効になっている場合に、設定されてないホスト名で、アクセスされた場合は、一番最初に記載されている VirtualHost 設定が、デフォルトとして、使われます。
これを利用して、一番最初の VirtualHost 設定で、すべてのアクセスを Deny するように設定したら 実現できるんじゃないかと思います。
なお、deny で、アクセス拒否された場合、403 Error になったと思います。
http://httpd.apache.org/docs/2.1/ja/vhosts/name-based.html
以下、設定例;
NameVirtualHost 123.456.123.456:80
<VirtualHost *:80>
# デフォルト設定
# すべての URI を 拒否。
ServerAdmin webmaster@example.com
DocumentRoot "/usr/local/apache/htdocs/"
ServerName 123.456.123.456
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
<Location /*>
Order allow,deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost *:80>
# www.example.com の設定
ServerAdmin webmaster@example.com
DocumentRoot "/usr/local/apache/htdocs/"
ServerName www.example.com
ServerAlias example.com
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
</VirtualHost>
ご回答ありがとうございます。
早速、教えていただいた方法を試してみましたが、
_default_ VirtualHost overlap on port 80, the first has precedence
というエラーがでて、最初のバーチャルホスト設定が優先されてしまうようです。(Apache Ver2.2.3)
リンク先のページでは、同じポートに複数のバーチャルホストを設定しても問題なさそうですので、なぜエラーが起きたのかもう少し原因を探ってみます。