[Apache] 名前ベースのバーチャルホストでIPアドレスによるアクセスを除外する

名前ベースのバーチャルホストでは、扱うホストそれぞれに対して<VirtualHost>ブロックを記述し、リストの最初のバーチャルホストがデフォルトのバーチャルホストとなる。IPアドレスでアクセスされた場合には一致するホスト名が見つからないため、デフォルトのバーチャルホストが使われる。この仕組みを利用して、デフォルトのバーチャルホストを例えば以下のように記述しておけば、IPアドレスでアクセスされた場合には外部サイトへ強制的にジャンプさせることが可能になる。

公式ドキュメントにも説明がある。

リクエストが来ると、サーバはまず最初に <NameVirtualHost> にマッチする IP アドレスかどうかをチェックします。マッチすれば マッチした IP アドレスの <VirtualHost> のそれぞれのセクションの中から ServerName か ServerAlias に要求されたホスト名があるか探します。 見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト が見つからなければ、マッチした IP アドレスの リストの最初にあるバーチャルホスト が使われます。

結果として、リストの最初のバーチャルホストが デフォルト の バーチャルホストになります。IP アドレスが NameVirtualHost ディレクティブにマッチした場合は、メインのサーバ の DocumentRoot は決して使われません どのバーチャルホストにもマッチしないリクエストに対して、 特別な設定をしたいのであれば、設定ファイル中の最初の <VirtualHost> コンテナにそれを記述してください。

名前ベースのバーチャルホスト – Apache HTTP サーバ バージョン 2.4
http://httpd.apache.org/docs/2.4/ja/vhosts/name-based.html