web-dev-qa-db-ja.com

ユーザーエージェント文字列の一部に基づいてWebリクエストをブロックする-機能しない

文字列のグループのいずれかが含まれているかどうかに基づいて、Webリクエストをブロックしようとしています。私自身の知識とオンライン検索の間で私が知る限り、私が持っているものは正しいです。ただし、これらのタイプのリクエストはまだアクセスログに表示されています。

リクエストが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]

私のWebサーバーはIBMi用のApache2.4です。

1
d.lanza38

リクエストがApache構成でブロックされた場合でも、アクセスログエントリは作成されますか?

はい。ただし、上記のRewriteRuleを前提として、403(禁止)としてログに記録する必要があります。

Mod_rewriteルールは、いくつかの小さな調整を除いて、問題ないように見えます...

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

文字列内のこれらの単語anywhereに一致させたい場合は、^.*および.*$アンカーは必要ありません。上記は単純に同じです:

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

FフラグimpliesLフラグもあるため、ここでは明示的なLフラグは必要ありません。

2
MrWhite