Назад | Перейти на главную страницу

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

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

Сохранятся ли записи в журнале доступа, если запрос был заблокирован в конфигурации 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.

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

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

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

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

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

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

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