Rewriteモジュールを使ったロボット対策
ロシアからやってくるクローラー、Yandexは拒否しておいた方がいいとのことだ。
そこで以下のように.htaccessに追加したのだが。。。
(robot.txtにも当然書いておく。どうせ無視するだろうが)
SetEnvIf User-Agent “Baiduspider” deny_agent
SetEnvIf User-Agent “Baiduspider+” deny_agent
SetEnvIf User-Agent “BaiduImagespider” deny_agent
SetEnvIf User-Agent “^Yandex*” deny_agent
order allow,deny
allow from all
deny from env=deny_agent
Rewriteモジュールの方が強力らしい、と小耳にはさんだ。
そこでこちらを参考の上、.htaccessへ以下のように書いてみた。
「RewriteCondで指定したロボットはrobots.txt以外のアクセスを拒否する」という意図である。
NCは大文字/小文字を区別しない、ORはor条件。Fは拒否(Forbidden)。
RewriteEngine On
RewriteBase /RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC, OR]
RewriteCond %{HTTP_USER_AGENT} BaiduImagespider [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
RewriteRule !^robots\.txt$ – [F]
しかし、500エラーになってしまうのである。
そこで以下のようにしてみたら、、、
※参照URL失念してしまいました(汗)
RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BaiduImagespider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
RewriteCond %{REQUEST_URI} !/robots\.txt$
RewriteRule ^.*$ – [F,L] ←L は書き換えが行われたら終了、を意味する
いけたようである。しばらく様子見。他にもブロックしておくべきロボット達はいるんだけどね。
Rewriteモジュールの便利なパターンを紹介。特定のリファラーからのアクセスを
拒否する、など使えそうだ。
↓ ↓ ↓
http://wiki.livedoor.jp/self_free/d/.htaccessRewrite