VirtualHost を設定している場合、どの ServerName にも一致しない場合は先頭の設定が使われる。という仕様を使って、IPアドレスでアクセスされた場合に 403 Forbidden を返すには以下のようにすればOK。
まずダミーのドキュメントルートを作成。
mkdir /path/to/docroot_dummy
httpd.conf を以下のように修正して httpd restart 。
NameVirtualHost *:80# IP直打ちの場合の設定 <VirtualHost *:80> DocumentRoot /path/to/docroot_dummy # 実際には存在しないServerName ServerName dummy.example.com <Directory "/path/to/docroot_dummy"> Order deny,allow Deny from all </Directory> </VirtualHost># site1.example.com <VirtualHost *:80> DocumentRoot /path/to/docroot_site1 ServerName site1.example.com <Directory "/path/to/docroot_site1"> # 各種設定... </Directory> </VirtualHost> # site2.example.com <VirtualHost *:80> DocumentRoot /path/to/docroot_site2 ServerName site2.example.com <Directory "/path/to/docroot_site2"> # 各種設定... </Directory> </VirtualHost>