-
Как запретить доступ к сайту по IP через .htaccess
30Декабря
Добрый день, друзья! Бывают ситуации, когда требуется запретить или ограничить доступ к сайту с определённых IP адресов. В этой статье я расскажу: «Как запретить доступ к сайту с определенного IP адреса?», «Как закрыть доступ ВСЕМ, кроме определенных IP» и т.д.Иногда требуется запретить доступ к сайту с определённого IP адреса или нескольких IP адресов. Ну допустим, какой-то «нехороший человек» упорно «гадит» нам в комментариях… Или спам-робот повадился к нам заглядывать… Естественно нам это не понравится! Для запрета доступа к сайту и папкам сайта в файле .htaccess используются дерективы allow и deny.

Чтобы запретить доступ с определенного IP адреса вставьте в файл .htaccess этот код:
#Запрет доступа к сайту с IP 298.169.132.24 Order allow,deny allow from all Deny from 298.169.132.24
Бывает обратная ситуация, когда требуется закрыть доступ к сайту всем, кроме определённых IP адресов. Например, это может понадобиться, когда на сайте проводятся технические работы. Недавно у меня была такая ситуация, когда на контент одного из интернет-магазинов обслуживаемых мною поступила жалоба… Пришлось срочно закрыть к нему доступ со всех IP кроме своего, связаться с администрацией и решать эту проблему.
Чтобы закрыть доступ к сайту всем, кроме определённых IP адресов вставьте в файл .htaccess следующий код:
Order deny,allow deny from all #Список IP через пробел, с которых доступ разрешен Allow from 197.143.50.248 193.478.457.10
В случае, если требуется закрыть доступ к сайту по маске, то используется не полный IP адрес. Исходный код для файла .htaccess будет выглядеть так:
#неполный адрес 198.69. #полные адреса, соответствующие первому 198.69.132.24 198.69.136.89 198.69.1.8 #Запрет доступа к сайту по маске Order allow,deny allow from all Deny from 198.69.
Для усиления защиты админки сайта имеет смысл разрешить доступ к ней только с определённых IP адресов. Пропишите в файл .htaccess следующий код:
#Указываем папку, к которой запрещаем доступ по имени хоста и его IP < Directory /root-admin/ > Order deny, allow deny from all #Адреса записываются через пробел Allow from 198.69.144.98 198.69.144.94
Стоит также сказать, что пользователь, IP адрес которого запрещён при попытке зайти на ваш сайт, получит 403 ошибку: Forbidden «You don't have permission to access / on this server».
Как видите ограничить или запретить доступ к сайту по IP адресу с помощью .htaccess совсем не сложно! Если у вас появились вопросы, буду рад ответить на них в комментариях! Задавайте! :)
В рубрике «Мотивация – путь к успеху» сегодня вот такая картинка:

Как вам статья? Надеюсь, тема: «Как запретить доступ к сайту по IP через .htaccess» была вам интересна, и вы нашли здесь для себя что-то полезное. Не забудьте подписаться на обновление моего сайта по e-mail.
Внимание! Всех приглашаю в свою ! Давайте делиться анонсами своих статей на стене этой группы! Думаю, она станет неплохим источником трафика для каждого блоггера!PS: я не уверен, напишу ли ещё статью в этом году, поэтому, Дорогие Друзья, от души поздравляю всех с Новым Годом и Рождеством! Желаю в новом 2013 году больше здоровья, огромного счастья, страстной любви и всего самого доброго!!!!! Всем Удачи!!!!!
На этом всё. С уважением, Павел Макаров.
P.S. Буду рад комментариям к этому посту.
-
Комментарии
30
Вы можете авторизироваться!
-
18 Марта 2013 00:22Саныч
ОтветитьПавел, спасибо большое за столь подробный разбор столь актуального вопроса! В последнее время очень часто лезут всякие нехорошие люди, много site lockout notifications. Скажите, есть ли вариант не прописывать каждый раз вручную "плохие" адреса в htaccess, а пользоваться какими-лиюо автоматическими службами?
-
30 Марта 2013 23:40Валерий
ОтветитьСпасибо! Статья полезная и актуальная. Воспользовался этой информацией.
-
05 Мая 2013 18:18Павел Макаров
ОтветитьНе за что Валерий! Рад, что вам пригодилась эта информация! :)
-
-
13 Июня 2013 18:14Pavel
ОтветитьХотел спросить как можно запретить по ip допустим по маске с адресов 213,230,64 по 213,230,92.такое как можно реализовать?не прописывать же с 64 до 92 в ручную.подскажите,очень надо.
-
-
19 Августа 2013 21:58Александр
ОтветитьОтлично написано! Спасибо! Надеюсь, отважу сейчас зас*анцев, надоели уже спамить комменты, ну совсем надоели...
-
23 Августа 2013 03:45Александр
ОтветитьЧто такое directory root-admin="" и нужно ли вставлять в скобки что-то? В wordpress на сколько знаю директория wp-admin или файл wp-login.php как с ними прописывать правило в .htaccess
-
16 Октября 2013 13:36Павел Макаров
ОтветитьЗдравствуйте Александр!
В данном случае directory /root-admin/ - это папка где хранятся файлы админки. Для wordpress это будет directory /wp-admin/
Или можно записать такое правило:
< Files wp-login.php > order deny,allow #Запрешено все, что не разрешено deny from all #Запрещено всем allow from 77.84.105.1 #Разрешено только мне :)
-
-
02 Ноября 2013 01:01Павел
ОтветитьПавел, приветствую! А как запретить доступ к сайту из всех стран, кроме России? И в России забанить один регион, СПб, например. Точнее, как это сделать, благодаря вашей статье уже стало понятно, вопрос -- как узнать маски IP адресов других стран?
-
12 Мая 2014 23:47алекс
ОтветитьПавел Здравствуйте Подскажите как закрыть доступ на сайт для всей России появилась временная нужда в этом =)
-
19 Ноября 2014 19:17Николыч
ОтветитьХотелось бы еще вот что узнать. Мой сайт целенаправленно воруют через какой-то грабер, который по всей видимости работает на прямую. так как отслеживаются все изменения на сайте моментально. Я установил запрет доступа по IP а есть ли такая штука, которая запрещает заход на сайт определенного домена?
-
24 Ноября 2014 13:50Павел Макаров
ОтветитьНиколыч, попробуйте следующий код в .htaccess:
RewriteCond %{HTTP_REFERER} ^http://www\.ПЛОХОЙ_ДОМЕН\.(.*) [NC] RewriteRule .* - [F]Также запрет можно реализовать на php, для этого разместите следующий код в самом верху файла index.php который должен находиться в коренной директории вашего сайта:
if(strpos( $_SERVER['HTTP_REFERER'], 'ПЛОХОЙ_ДОМЕН.com') !== FALSE) {print 'Вы перешли с ПЛОХОЙ_ДОМЕН.com - для вас сайт закрыт!'; exit();}
-
-
20 Апреля 2015 13:29Александр
ОтветитьЗдравствуйте. Мой сайт на протяжении нескольких суток кто то пытается взломать. Чтобы защитить, я так понял мне нужно вставить первый код?
-
28 Апреля 2015 14:12Alex
ОтветитьСмените адрес входа в админку, а файл wp-login заблокируйте через .htaccess
-
-
30 Апреля 2015 19:15Игорь
ОтветитьВсе бы ничего, но бывают ситуации, когда IP нет в базе, т.е. часть целевой аудитории потеряется, можно ли как-то использовать обработчик тех адресов которые пытались, но не прошли по нашей маске. Для того что бы эти самые адреса потом проверить ручками и в случае чего добавить в общий список?
-
08 Сентября 2015 23:15Vaf
ОтветитьТоже помогло. Какие то школьники заказывали обратный звонок через каждые 5 минут на левые номера с одного и того же IP адреса. Школьники отправились в баню :)
-
-
10 Декабря 2015 16:20СЕМЁН
ОтветитьПавел,я воспользовался вашим советом и у меня не открываются теперь страницы кроме главной.
-
-
25 Апреля 2016 15:17Павел Макаров
ОтветитьАнтон, скорее всего писать php-скрипт проверки каждого входящего ip на принадлежность к определённому региону и далее уже делать вывод, пускать на сайт или нет. Подобного готового скрипта у меня нет.
-
-
13 Апреля 2016 22:27Евгений
ОтветитьЗдравствуйте, у моего сайта появился клон, который всё изменяет режиме онлайн с моего сайта, НО клон почему-то имеет два IP адреса, и не блокируется по IP ! Помогите пожалуйста заблокировать нахлебника! Хостинг клона в США - cloudflare.com
-
23 Мая 2016 12:25Андрей
ОтветитьСделал всё в точности, прописал deny и маски айпи. Сохранил в htaccess.txt в корень сайта на Joomla. Сайт всё равно доступен с этих айпи. Возможные ошибки с моей стороны (ИМХО): 1) в коде символ # в строках с deny XXX.XXX.XXX.XXX я не ставил 2) в Вашей инструкции не указано КУДА ИМЕННО вставлять в файле htaccess.txt, поэтому впихнул просто в середину файла. Где еще может быть ошибка?
-
20 Июля 2017 23:26Алексей
ОтветитьСам файл должен быть не htaccess.txt а .htaccess и вставляйте строки лучше в конец файла
-
-
-
18 Ноября 2016 23:10Александр
ОтветитьДобрый вечер! Подскажите написание .htaccess Чтобы можно заходить только с Российских ip, все остальные заблокированы. СПАСИБО!)
-
04 Февраля 2017 14:30qwert
ОтветитьПодскажите, пожалуйста, какой код должен быть, чтобы запретить доступ c разных IP- адресов? Например, с 38.99.83.77 78.88.81.55 58.55.83.192 и т.д.
-
29 Марта 2018 14:28
Larisa
ОтветитьСпасибо большое, а то грабберы тянут всё с моего сайта, так они ещё и позиции в поисковиках выше моих занимают.
-
-
08 Декабря 2019 10:19Kaviol
ОтветитьА как сделать, чтобы человек с нужным ip вместо сайта увидел заданную страницу? И еще вопрос: мы можем сделать так, чтобы сайт проверил IP и если ip совпал с нужным, то произошло выполнение функции?
-



Павел Макаров
Здравствуйте, Саныч!
На счёт автоматических служб-сервисов я точно не знаю.. Но можно написать небольшой php-скрипт, который будет запрещать доступ к сайту не хуже файла htaccess, а информацию о "плохих" ip адресах хранить в базе. Соответственно можно сделать в админке удобную форму для добавления этих ip адресов в базу данных. Это позволит выполять эту работу приятнее и быстрее!