Назад | Перейти на главную страницу

Запретить запросы на другие домены в Apache 2

Скажем, у меня есть xy.com, работающий на сервере под управлением Apache. Это виртуальный хост по умолчанию.
Теперь кто-то переписал свой файл hosts, чтобы перенаправить yz.com на IP-адрес моего сервера. Поскольку мой сервер ничего не знает о yz.com, он просто разрешает его на виртуальный хост по умолчанию. Итак, в этом случае yz.com/hello получает разрешение на xy.com/hello и пытается обслуживать страницу / hello моего сайта. Есть ли способ (возможно, с помощью RewriteRule или чего-то еще) отключить запросы, запрашивающие yz.com с моего сервера? Дайте им, например, 403 или что-нибудь, только не пропускайте ничего через Apache, если он не запрашивает xy.com.
Я использую последнюю версию Apache в Ubuntu LTS.

Почему бы просто не изменить 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>

Почему xy.com используется по умолчанию, если вы этого не хотите?

Добавьте новый виртуальный хост по умолчанию, который ничего не делает, кроме возврата 404.

Затем добавьте xy.com в качестве записи виртуального хоста. Его можно использовать только по запросу.

RewriteRule будет примерно таким:

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

Другое решение - добавить новый виртуальный хост по умолчанию, который отвечает 403 на любые запросы.
На ваш настоящий виртуальный хост будут поступать только совпадающие запросы.