Зачастую возникает необходимость заблокировать непрошеным гостям доступ к какому-то файлу или даже целой папке на Вашем сайте. Например, к админ-панели или каким-то важным файлам и папкам, которые должны быть доступны только хозяину сайта, но пароль на них ставить нет необходимости.
Это, на самом деле, задача на «раз-два». : )
Как заблокировать доступ ко всему сайту
Для блокировки нам понадобится создать всего 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)$»>
В следующей заметке я расскажу как защитить паролем папку и, при необходимости, дать беспрепятственный доступ к отдельным её файлам.
Прокомментировать