На этот вопрос уже есть ответ здесь:
Мне нужно выяснить, как заблокировать прямой IP-доступ к моему веб-сайту.
Пример: я хочу, чтобы когда люди вводили мой IP-адрес 1.2.3.4
в браузере, он не работал, но когда они набирали www.example.com
, он работает.
Я использую Apache 2.4.9
, а мой веб-сайт работает с использованием WampServer
.
Я пробовал другие решения некоторых старых вопросов здесь, но ни одно из них не помогло мне. Я пробовал вставить информацию о виртуальном хосте в vhosts.conf, но у меня не получилось сделать это правильно, и я попытался переписать материал с помощью файла htaccess, но это тоже не сработало.
Один из способов сделать это - установить условие перезаписи в глобальном контексте сервера, которое запрещает запросы на основе IP, требуя заголовка HTTP, подобного пример, показанный ниже:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{REQUEST_URI} !^/error [NC]
RewriteRule ^.(.*) - [L,F]
ПРИМЕЧАНИЕ. В этом примере необходимо включить mod_rewrite
.
ПРИМЕЧАНИЕ ТАКЖЕ: если у вас несколько виртуальных хостов, вы можете изменить RewriteCond
, чтобы проверить в более широком смысле или используйте несколько операторов RewriteCond
для размещения различных доменов.
Альтернативная конфигурация:
<If req('Host') != 'www.example.com'">
<Location "/">
Require all denied
</Location>
</If>
Обычно первая запись виртуального хоста также действует как запись по умолчанию, поэтому сделайте точку входа вашего первого виртуального хоста в папку со страницей отказа в доступе.