Apacheを搭載したサーバーでxy.comを実行しているとしましょう。これはデフォルトの仮想ホストです。
これで、誰かが自分のhostsファイルを書き直して、yz.comをサーバーのIPにリダイレクトしました。私のサーバーはyz.comについて何も知らないので、デフォルトの仮想ホストに解決するだけです。したがって、この場合、yz.com/helloはxy.com/helloに解決され、私のサイトの/ helloページを提供しようとします。サーバーからyz.comを要求するリクエストを無効にする方法はありますか(おそらくRewriteRuleなどを使用)?たとえば、403などを与えます。xy.comを要求しない限り、Apacheに何も通さないでください。
UbuntuLTSで最新のApacheバージョンを使用しています。
Xy.comをデフォルトにしたくないのに、なぜデフォルトなのですか?
404を返すだけの新しいデフォルトの仮想ホストを追加します。
次に、xy.comを仮想ホストエントリとして追加します。要求された場合にのみ使用されます。
デフォルトのVHostを単に拒否に変更してみませんか?
<VirtualHost *:80>
ServerName lol.no
DocumentRoot /var/empty/httpd
<Location />
Deny from all
Allow from none
</Location>
</VirtualHost>
<VirtualHost *:80>
...your VHost goes here...
</VirtualHost>
RewriteRuleは次のようになります。
RewriteCond %{HTTP_Host} !^your\.site\.com$ [NC]
RewriteRule .* - [F]
他の解決策は、すべてのリクエストに403で応答する新しいデフォルトの仮想ホストを追加することです。
一致するリクエストのみが実際の仮想ホストに送信されます。