Я так понимаю запрет будет на всех, у кого язык ру в браузере?
Да. Поэтому обязательно проверь что в этом заголовке присылают роботы-индексаторы Google и остальные боты, которые ходят с подсетей Google (у них в юзерагенте нет строки "GoogleBot"). Иначе, сам понимаешь, что произойдёт.
можно проксировать сайт через клаудфлар, а в .htaccess блокировать страны по заголовку HTTP_CF_IPCOUNTRY. Его добавляет клаудфлар. В плане нагрузки не самый эффективный способ, но просто реализуется
Ну так я могу и через хтаццес по маске ебнуть или не?
Это будет список на 2-3 тысячи подсетей. А файл .htaccess заново читается и парсится при каждом обращении к веб-серверу.
Правильнее сделать через ipfw или что там есть для твоей OS.
И это список подсетей надо ещё где-то достать и поддерживать его актуальность.
если много IP или сеток, то удобно использовать RewriteMap. Используется проиндексированная база. Кстати туда можно загнать любой список строк, не только IP.
Код:
создать из txt файла индексированную базу сеток:
httxt2dbm -f DB -i banlist.txt -o banmap.dbm
в httpd.conf добавить директиву
RewriteMap banmap dbm=db:banmap.dbm
в .htaccess:
SetEnvIf Remote_Addr "^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)" bannet=$1.$2.$3
RewriteCond ${banmap:%{ENV:bannet}|0} !=0
RewriteRule .* - [R=500,L]
успешно использую для больших баз в 100-500К строк
dbm базу можно обновлять и не перезапускать апач. Он сам следит за датой изменения файла и перезагружает его если надо
если много IP или сеток, то удобно использовать RewriteMap. Используется проиндексированная база. Кстати туда можно загнать любой список строк, не только IP.
Знакомый тоже этим пользуется, говорит, что работает хорошо.