Раздел помощи SpaceWeb

Контроль доступа через .htaccess для apache2.4

30 янв, 2024

Файл .htaccess позволяет производить дополнительную конфигурацию веб-сервера Apache для:

  • переадресации на другой домен
  • контроля доступа к сайту
  • изменения значений директив PHP
  • отображения собственных страниц ошибок

Директивы для веб-сервера Apache2.4+ отличаются от Apache2.2. В примерах указаны директивы для обеих версий web-серверов.

Для контроля доступа к сайту можно использовать следующие директивы:

Важно: нельзя использовать директивы для веб-сервера Apache2.4+ и Apache2.2 одновременно. Это может привести к некорректной работе сайта.

Домены с кириллическими символами

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

Отклонить все запросы

Apache 2.2

Order deny,allow
Deny from all

Apache 2.4

Require all denied

Разрешить все запросы

Apache 2.2

Order allow,deny
Allow from all

Apache 2.4

Require all granted

Запретить доступ на основе имени хоста

Apache 2.2

Order Allow,Deny
Allow from all
Deny from example.com

Apache 2.4

<RequireAll>
Require all granted
Require not host example.com
</RequireAll>

Использование директив <RequireAll> и Require all granted обязательны если используется более сложная конструкция.

Запретить доступ на основе IP-адреса

Для ограничения доступа к сайту с определённых IP-адресов в файл .htaccess требуется добавить:

Apache 2.2

Order Allow,Deny
Allow from all
Deny from 111.111.111.111
Deny from 222.222.222.222
Deny from 123.123.123.123

Apache 2.4

<RequireAll>
Require all granted
Require not ip 111.111.111.111
Require not ip 222.222.222.222
Require not ip 123.123.123.123
</RequireAll>

Запретить доступ со всех IP-адресов, кроме нужного

Для ограничения доступа к сайту со всех IP-адресов, кроме нужного (разрешенных IP-адресов может быть несколько), в файл .htaccess требуется добавить:

Apache 2.2

Order Deny,Allow
Deny from all
Allow from 111.111.111.111

Apache 2.4

Require ip 111.111.111.111

Запретить доступ к определенному файлу

Настройка ограничения доступа к определённым файлам производится путем добавления в .htaccess директив:

Apache 2.2

<Files ПУТЬ_К_ФАЙЛУ>
Order Allow,Deny
Allow from all
Deny from 123.123.123.123
</Files>

Apache 2.4

<Files ПУТЬ_К_ФАЙЛУ>
<RequireAll>
Require all granted
Require not ip 123.123.123.123
</RequireAll>
</Files>

где ПУТЬ_К_ФАЙЛУ - необходимо заменить на целевой файл, а IP — на IP-адрес, для которого будет запрещен доступ.

Разрешить доступ к определенному файлу с IP-адреса

Настройка ограничения доступа к определённым файлам производится путем добавления в .htaccess директив:

Apache 2.2

<Files ПУТЬ_К_ФАЙЛУ>
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Files>

Apache 2.4

<Files ИМЯ_ФАЙЛА>
Require ip 77.222.44.126
Require ip 123.123.123.123
</Files>

где ИМЯ_ФАЙЛА - необходимо заменить на целевой файл, а IP — на IP-адрес, для которого будет разрешен доступ.

Запретить доступ по User-Agent (блокировка ботов)

Apache 2.2

SetEnvIfNoCase User-Agent "AESOP_com_SpiderMan" bad_bot
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot
Order Allow,Deny
Allow from all
Deny from env=bad_bot

Apache 2.4

<If "%{HTTP_USER_AGENT} =~ m#BadBot#i">
Require all denied
</If>

где BadBot - необходимо заменить на User_Agent, которым представляется бот. Узнать его можно из лога запросов.


enlightened Полный список и подробности того, какие директивы доступны для редактирования через файл .htaccess, предоставлены в официальной документации PHP и веб-сервера Apache2.4: