Скажем, у меня есть 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 на любые запросы.
На ваш настоящий виртуальный хост будут поступать только совпадающие запросы.