Блокировка доступа к сайту
Каждый запрос на сайт содержит специальный заголовок GeoIp-Country-Code
, в котором содержится двухбуквенный код страны посетителя (ISO 3166). Страна определяется исходя из IP-адреса посетителя по данным MaxMind GeoLite.
Ниже представлены варианты решения некоторых типичных задач (во всех примерах указанные строки нужно добавить в начало файла .htaccess в корневом каталоге сайта):
Запретить доступ к сайту для посетителей из Китая:
RewriteEngine On
RewriteCond %{HTTP:GeoIp-Country-Code} ^(CN)$
RewriteRule .* - [F]
Сделать редирект с главной страницы в подраздел /ua/
для посетителей из Украины:
RewriteEngine On RewriteCond %{HTTP:GeoIp-Country-Code} ^(UA)$ RewriteCond %{REQUEST_URI} ^/$ RewriteRule .* /ua/ [L,R=302]
Заблокировать POST-запросы (комментарии/авторизация на сайте/постинг на форуме) со всех стран, кроме Украины и Польши:
RewriteEngine On RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$ RewriteCond %{REQUEST_METHOD} POST RewriteRule .* - [F]
Заблокировать GET-запросы (посещение страниц/использование сайта) со всех стран, кроме Украины и Польши:
RewriteEngine On RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$ RewriteCond %{REQUEST_METHOD} GET RewriteRule .* - [F]
Доступ открыт всем, кроме указанных User-Agent
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(useragent1|useragent2|useragent3).*$ [NC] RewriteRule .* - [F,L]
Вместо useragent1
, useragent2
и useragent3
укажите User-Agent, которые нужно блокировать (указывать можно в любом регистре).
Доступ закрыт для всех, кроме указанных User-Agent
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !^.*(useragent1|useragent2|useragent3).*$ [NC] RewriteRule .* - [F,L]
Вместо useragent1
, useragent2
и useragent3
укажите User-Agent, у которых должен быть доступ (указывать можно в любом регистре).
Ограничение доступа к каталогу
require valid-user Authname "Basic Auth" Authtype Basic AuthUserFile "/home/название_аккаунта/.htpasswd"
Файл паролей .htpasswd
— это простой текстовый файл, имеющий следующую структуру:
user1:password user2:password
Где userX
— логин пользователя, password
— его зашифрованный пароль.
Рекомендуется размещать этот файл в каталоге, недоступном через браузер (вне каталога сайта).
Доступ только к определённому файлу
require valid-user Authname "Protected" Authtype Basic AuthUserFile "/home/название_аккаунта/.htpasswd" <Files page.php> allow from all satisfy any </Files>
Где page.php
— файл, к которому должен быть открыт доступ в закрытом каталоге.
Доступ только к файлам с определённым расширением
require valid-user Authname "Protected" Authtype Basic AuthUserFile "/home/yourlogin/.htpasswd" <Files *.cfg> allow from all satisfy any </Files>
Где .cfg
— расширение файлов, к которым будет открыт доступ в закрытом каталоге.
Доступ только к файлам с определёнными расширениями
require valid-user Authname "Protected" Authtype Basic AuthUserFile "/home/yourlogin/.htpasswd" <FilesMatch ".(gif|bmp|tiff|swf|flv)$"> allow from all satisfy any </FilesMatch>
Где gif
, bmp
, tiff
, swf
, flv
— расширения файлов, к которым будет открыт доступ в закрытом каталоге.