Блокировать веб-запросы на основе части строки пользовательского агента - Не работает

Я пытаюсь заблокировать веб-запросы на основе того, содержат ли они какую-либо группу строк. Насколько я могу судить между своими знаниями и поиском в Интернете, то, что у меня есть, верно. Однако я все еще вижу эти типы запросов в журналах доступа.

Будут ли создаваться записи журнала доступа, если запрос был заблокирован в конфигурации Apache? Или я ошибся в определении VHOST?

RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_USER_AGENT} ^.*(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs).*$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(Semrush|SISTRIX|80legs|HTTrack|Xenu|dataprovider).*$ [NC]
RewriteRule .* - [F,L]

Мой веб-сервер - Apache 2.4 для IBM i.

1
задан 12 September 2016 в 17:11
1 ответ

Сохранятся ли записи журнала доступа, если запрос был заблокирован в конфигурации Apache?

Да, однако, они должны регистрироваться как 403 (Запрещено) - с учетом RewriteRule размещено выше.

Ваше правило mod_rewrite выглядит нормально, за исключением нескольких незначительных изменений ...

 ^. * (Icevikatam | AhrefsBot | spbot | MJ12 | majestic12 | Ahrefs). * $
 

Вам не нужны привязки ^. * и . * $ , если вы просто хотите сопоставить эти слова где угодно в строке. Вышеупомянутое то же самое, что просто:

(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs)
 RewriteRule. * - [F, L]
 

Флаг F также подразумевает флаг L , поэтому явный флаг L здесь не требуется.

2
ответ дан 3 December 2019 в 20:34

Теги

Похожие вопросы