Сначала, создается файл .htaccess
как простой документ текстового формата без расширения. Обычно файл по умолчанию существует в корневой директории сайта в популярных CMS. Если его нет, то необходимо его создать через менеджер файлов.
Ниже мы рассмотрим различные варианты ограничения доступа с примерами кода.
Полное закрытие сайта
Для того чтобы полностью закрыть сайт от посещений и возможности просмотра его содержимого в .htaccess необходимо добавить следующее:
Order Deny, Allow
Deny from all
После этого ни с какого IP-адреса зайти на сайт будет невозможно. При такой попытке на стороне клиента выдается 403 ошибка, обозначающая запрет на просмотр.
Файл .htaccess для этой операции необходимо расположить в корне сайта.
Запрет доступа для целевого IP-адреса
Для закрытия доступа с определенного IP-адреса добавьте в файл .htaccess
следующие строки:
Order Allow,Deny
Allow from all
Deny from 123.123.123.123
Deny from 122.122.122.122
где 123.123.123.123, 122.122.122.122 — IP-адреса, для которых запрещается доступ к сайту.
Не заблокируйте случайно свой IP-адрес.
Разрешение только для конкретных IP-адресов
Для открытия доступа с определенного IP-адреса, добавьте в файл .htaccess следующие строки:
Order Allow,Deny
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx
Вместо xxx.xxx.xxx.xxx укажите IP-адреса, для которых хотите открыть доступ к сайту.
Блокировка подсети IP
Если вам нужно заблокировать не отдельные IP-адреса, а подсеть IP-адресов (некий диапазон), сначала определите нужное значение с помощью безклассовой адресации CIDR (калькулятор IP-диапазона в CIDR).
Затем добавьте в файл .htaccess, находящийся в корневой папке сайта, следующие строки:
Order Deny,Allow
Deny from 123.123.0.0/26
где 123.123.0.0/26 — подсеть IP, которую вам нужно заблокировать.
Ограничение доступа к целевой папке
Помимо прочего, запрет доступа для определенных IP-адресов к разделам сайта помогает повысить безопасность административной части. В файле .htaccess, который расположен в корневой директории сайта добавьте следующий код:
<Directory /wp-admin/>
order deny, allow
deny from all
#Адреса, которым разрешен вход записываются через пробел
allow from 198.69.144.98 198.69.144.94
</Directory>
Также можно просто создать файл .htaccess в нужной директории с необходимым правилом.
Ограничение доступа к определенному файлу на сайте
Нередко возникают ситуации, при которых необходимо закрыть возможность просмотра не сайта или папки, а только определенного файла или группы файлов. Для этого используются директивы – files и filesmatch. Они несколько похожи на мета-теги, используемые для разметки HTML-кода.
Как пример приведем ограничение просмотра для архива site.zip:
<Files "site.zip">
deny from all
</Files>
После размещения .htaccess с кодом в папке, где находится целевой файл при обращении к нему напрямую на стороне клиента появится сообщение об ошибке 403.
Для ограничения просмотра группы файлов используется директива filesmatch и регулярные выражения, позволяющие создать необходимую маску. Пример ограничения доступности архивных и графических файлов выглядит следующим образом:
FilesMatch ".(gif|png|jpe?g|rar|zip)$">
deny from all
</FilesMatch>