2013-03-27 5 views
1

Есть ли команда .htaccess, которая запрещает доступ к каждому ip в определенном файле? Скажем, у меня есть файл bans.txt (сидящий рядом с моим файлом .htaccess), который состоит из простого списка ips, один под другим. Я хочу запретить доступ к каждому ip в этом файле. Есть ли простая команда .htaccess, которая это сделает? Что-то вроде:Запретить доступ из ips в файл

Deny from bans.txt 

Я искал, и я не думаю, что есть, но просто проверка, спасибо.

ответ

1

На самом деле есть простой способ достичь этой задачи исключительно из Apache. Вы должны использовать функцию под названием RewriteMap

1 - Сначала включите mod_rewrite и .htaccess через httpd.conf, а затем поместить этот код в httpd.conf, чтобы позволить RewriteMap называется ipmap:

RewriteMap ipmap txt:/some/path/to/ipmap.txt 

2 - Затем создайте ваш текстовый файл /some/path/to/ipmap.txt с данными, подобными этому , перечисляющий все IP-адреса, которые вы хотите запретить:

192.168.0.1 1 
192.168.0.4 1 
10.119.35.8 1 
... 
... 

3 - Отказы процесса Apache (так как вы изменили httpd.conf)

4 - Наконец поместить этот код в .htaccess под $DOCUMENT_ROOT каталогом:

RewriteEngine On 
RewriteBase/

# if IP is found in ipmap then return Forbidden error 
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^1$ 
RewriteRule^- [F,L] 
+0

Аккуратные действительно, спасибо! – Sophivorus

+0

Добро пожаловать, рад, что это сработало. RewriteMap также имеет более приятные функции, например. позволяя запускать SQL или ваш скрипт непосредственно из .htaccess. – anubhava

Смежные вопросы