Для этого вы можете использовать URL Rewriter, например IIRF . Вставьте правила, чтобы вернуть 404 или что-либо еще, на запросы, которые приходят с запрещенных IP-адресов. Это будет работать с любой платформой веб-приложения: PHP, Java, ASP.NET, RoR, статический HTML или изображения, что угодно.
В файле readme приведен пример, подобный следующему:
RewriteCond %{REMOTE_ADDR} ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$
RewriteRule ^/(?!redirected.htm)(.*)$ /redirected.htm
и там написано:
Приведенное выше условие оценивается как истинное, когда переменная сервера "REMOTE_ADDR" оценивается по IP-адресу, который НЕ является 127.0.0.1. ?! является отрицательным прогнозом нулевой ширины, и (. *) в конце регулярного выражения - это отлов любого мусора, который иногда появляется в этой переменной. Правило, следующее за условием, говорит, что для любого URL, который не является «redirected.htm», сопоставьте его с «redirected.htm». Это предотвращает бесконечное переписывание. (Вы также можете предотвратить бесконечное переписывание с помощью флага модификатора [L]).
Этот RewriteCond + RewriteRule перенаправляет любые исходящие запросы на сервер IIS. Вы можете сделать что-то подобное для определенного набора IP-адресов из белого списка.
IIRF - это фильтр ISAPI, написанный на C, и по своей философии он похож на mod_rewrite. Он работает с IIS5, 6 или 7. Вам потребуется доступ администратора для его настройки. Вам не нужно «программировать это», но есть INI-файл с синтаксисом, аналогичным .htaccess (специально для правил mod_rewrite).
IIRF является бесплатным и открытым исходным кодом.