Зачастую возникает необходимость заблокировать непрошеным гостям доступ к какому-то файлу или даже целой папке на Вашем сайте. Например, к админ-панели или каким-то важным файлам и папкам, которые должны быть доступны только хозяину сайта, но пароль на них ставить нет необходимости.

Это, на самом деле, задача на «раз-два». : )

Как заблокировать доступ ко всему сайту

Для блокировки нам понадобится создать всего 1 файл с именем .htaccess в папке  с защищаемыми файлами. В него при помощи любого подходящего текстового редактора (например, того же «Notepad2») впишите в начало файла следующие строки:

Order Allow,Deny
Deny from Блокируемый_IP_адрес
Allow from all

Если нужно заблокировать все IP  принадлежащие провайдеру (например, если сайт спамят комментариями или парсят контент) — можно использовать мастер блокировки (выбрав «htaccess»  и указав любой IP  принадлежащий блокируемому провайдеру)

Как заблокировать доступ к одному или нескольким файлам по IP

# Запрет доступа по IP адресу к файлу file.php

<Files file.php>
Order Deny,Allow
Deny from all
Allow from Ваш_IP_адрес
</Files>

 

Давайте разберем написанное построчно, чтобы было понятно — что же мы делаем.

Конструкция

<Files file.php>
...
</Files>

даёт понять системе, что правила, которые находятся внутри требуется применять только при попытке доступа к файлу с  именем file.php

Строка:

Order Deny,Allow

определяет порядок действий при блокировке. То есть, сначала применяются все директивы, касающиеся блокировки (deny), а потом уже всё, что касается разрешения доступа  (allow).

Дальше мы запрещаем доступ к файлу отовсюду:

Deny from all

(кстати, если нужно запретить только с отдельных IP — Deny from Запретный_IP-адрес)

…и разрешаем его только с нашего IP («Ваш_IP-адрес» заменяем на нужный IP):

Allow from Ваш_IP-адрес

Всё, блокировка по IP установлена. Теперь любая попытка обращения к указанному файлу с чужих IP-адресов будет приводить к ответу 403 «Access denied»

Полезные примечания

Часто бывает, что нужно ограничить доступ ко всем файлам с каким-то одним расширением. Для этого используется та же конструкция, в которую нужно внести минимальные изменения. А именно первую строку сделать вот такой:

<Files «*.conf»>   — здесь звёздочка * указывает на то, что имя файла может состоять из любого количества любых знаков а после точки, собственно, вписываем наше расширение, доступ к которому требуется блокировать.

В результате, содержимое файл .htaccess будет выглядеть вот так:

<Files "*.conf">
Order Deny,Allow
Deny from all
Allow from Ваш IP адрес
</Files>

Если расширений несколько — пишем их через разделитель. Вот так: <Files ~ «\.(inc|conf|cfg)$»> 

В следующей заметке я расскажу как защитить паролем папку и, при необходимости, дать беспрепятственный доступ к отдельным её файлам.