web-dev-qa-db-ja.com

Apache2の他のドメインへのリクエストを拒否する

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バージョンを使用しています。

4
Rickye

Xy.comをデフォルトにしたくないのに、なぜデフォルトなのですか?

404を返すだけの新しいデフォルトの仮想ホストを追加します。

次に、xy.comを仮想ホストエントリとして追加します。要求された場合にのみ使用されます。

5
MikeyB

デフォルトの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>
5
BMDan

RewriteRuleは次のようになります。

RewriteCond %{HTTP_Host} !^your\.site\.com$ [NC]
RewriteRule .* - [F]

他の解決策は、すべてのリクエストに403で応答する新しいデフォルトの仮想ホストを追加することです。
一致するリクエストのみが実際の仮想ホストに送信されます。

2
faker