ロボットを拒否するapache設定(.htaccess)

.htaccessに関する覚え書き | IDEA*IDEAっていう記事を見かけたんだが、うーん。これはこれで動くけどさ。

# 検索ボットを拒否
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^searchbot1 [OR]
RewriteCond %{HTTP_USER_AGENT} ^searchbot2 [OR]
RewriteCond %{HTTP_USER_AGENT} ^searchbot3
RewriteRule ^(.*)$ http://www.yourSite.com/goAway.html

もしくは次。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^searchbot1 [OR]
RewriteCond %{HTTP_USER_AGENT} ^searchbot2 [OR]
RewriteCond %{HTTP_USER_AGENT} ^searchbot3
RewriteRule ^(.*)$ http://www.someOtherWebsite.com/ [R, L]

次の点で、いまいちかと。

  • 上の例では200(正常)のステータス、下の例では302(一時的に他へ移ったよ)のステータスを返すことになる。いずれも「拒否」ではない。拒否なら403などを返すべき。
  • [OR]でつなぐのって書き落としがちでスマートじゃない。
  • mod_rewriteが万能バサミだからって、やりすぎるとそのうち設定ファイルがぐちゃぐちゃになるよ。

ということで、SetEnvIfか、BrowserMatch(こっちのほうが設定名が直感的)を使う。

BrowserMatch "NaverBot"        badrobot
BrowserMatch "Baiduspider"    badrobot
deny from env=badrobot

これで、該当のロボットが来た場合は403 Forbidden(アクセス禁止)を返すようになる。 環境変数を使うようにしたほうが、何かとスマートに書ける。詳しくはマニュアルを→ mod_setenvif - Apache HTTP サーバ

see also:

トラックバックURL

このエントリーのトラックバックURL:
http://www.ywcafe.net/mt/mt-tb.cgi/930

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)


画像の中に見える文字を入力してください。