Apache Webサーバーの設定ファイルで正規表現によってUA文字列ブロックを実現するにはどうすればよいですか?
たとえば、debianサーバー上のApacheからすべてのボットをブロックしたい場合、ユーザーエージェントに/\b\w+[Bb]ot\b/
または/Spider/
という正規表現が含まれています。
これらのボットはサーバー上のページを見ることができず、アクセスログにもエラーログにも表示されません。
http://global-security.blogspot.de/2009/06/how-to-block-robots-before-they-hit.html
はそのためにmod_security
を使用することを想定していますが、http.conf?の単純なディレクティブはありませんか?
Apacheで書き換えエンジンを有効にしました。
a2enmod rewrite
このブロックを/etc/Apache2/httpd.conf
に追加しました
<Directory /var/www/>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} sosospider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BaiduSpider [NC]
# Allow access to robots.txt and forbidden message
# at least 403 or else it will loop
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteCond %{REQUEST_URI} !^/403\.shtml$
RewriteRule ^.* - [F,L]
</IfModule>
</Directory>
apacheを再起動しました:
Apache2ctl graceful
現在、これらのスパイダーからのこれらの呼び出しはすべて403エラーを引き起こします。
grep -E 'spider|bot' /var/log/Apache2/*.log