Динамический IP-адрес .htaccess?

Можно ли заблокировать пользователей от IP-адресов с помощью динамического файлового списка?

Итак, предположим, что .htaccess выглядит так:

order Deny,Allow
Deny from 123.156.0.1
Deny from 10.0.0.10
Allow from all

Можно ли сделать этот список динамическим, например:

order Deny,Allow
[include Deny list here]
Allow from all

Другим вариантом было бы, конечно, исправить его с помощью PHP, но желательно, чтобы Apache справлялся с этим.

Ответ 1

В соответствии с Apache docs, кажется, что невозможно считывать значения из текстового файла.

Однако вы можете include конфигурационный файл, содержащий IP-адреса. Однако они должны быть в формате файла apache conf.

Это должно работать:

order Deny,Allow
include conf/IPList.conf
Allow from all

Это возможно даже для include целых каталогов, даже если это не рекомендуется.

Ответ 2

Я использую функцию RewriteMap из Apache RewriteModule в качестве белого списка:

## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]

С некоторой настройкой вы можете сделать это черным списком.