特定URLへ検索botのアクセスを制限する

検索ロボットに巡回させたくないURLがある場合、robots.txtを設置する方法がある。
ただ、robots.txtを無視してアクセスする検索ロボットも少なくない。
確実に拒否するならば、Apache設定ファイルにてdeny指定したほうがよい。

事の発端は、wordpress pluginで自動多言語化(15言語程度)した際に、
検索ロボットが、各言語化した場所(URL)までクロールするため、
サーバにかなりの負荷がかかってしまっていた。

多言語化されたURL(巡回拒否したいURL)は下記の通り。
ex1. http://example.jp/abc/en/*****/
ex2. http://example.jp/abc/de/*****/

http://example.jp/abc/<2文字>/*****/といった形式のため、

LocationMatch で正規表現にてマッチさせる。

$ vi /etc/httpd/conf.d/httpd.conf

#UAから検索bot判定する / no_log=ログに残さない
SetEnvIf User-Agent "^Baiduspider" no_log bots
SetEnvIf User-Agent "^BasicHTTP" no_log bots
SetEnvIf User-Agent "^Bookmark" no_log bots
SetEnvIf User-Agent "^Gigabot" no_log bots
SetEnvIf User-Agent "Girafabot" no_log bots
SetEnvIf User-Agent "^Googlebot" no_log bots
SetEnvIf User-Agent "Googlebot" no_log bots
SetEnvIf User-Agent "^Hatena" no_log bots
SetEnvIf User-Agent "^ia_archiver" no_log bots
SetEnvIf User-Agent "^ichiro" no_log bots
SetEnvIf User-Agent "^Infoseek" no_log bots
SetEnvIf User-Agent "^Java" no_log bots
SetEnvIf User-Agent "^MaSagool" no_log bots
SetEnvIf User-Agent "^MFcrawler" no_log bots
SetEnvIf User-Agent "^MJ12bot" no_log bots
SetEnvIf User-Agent "^msnbot" no_log bots
SetEnvIf User-Agent "^MVAClient" no_log bots
SetEnvIf User-Agent "^page_verifier" no_log bots
SetEnvIf User-Agent "^Plagger" no_log bots
SetEnvIf User-Agent "^psbot" no_log bots
SetEnvIf User-Agent "^scidclam" no_log bots
SetEnvIf User-Agent "^Scooter" no_log bots
SetEnvIf User-Agent "^Shim-Crawler" no_log bots
SetEnvIf User-Agent "^Snapbot" no_log bots
SetEnvIf User-Agent "^WebCrawler" no_log bots
SetEnvIf User-Agent "^Yahoo" no_log bots
SetEnvIf User-Agent "Yahoo! Slurp" no_log bots
SetEnvIf User-Agent "^zia-httpmirror" no_log bots
SetEnvIf User-Agent "msnbot" no_log bots

#正規表現を使ってマッチするURLの場合の処理を記述
#/abc/<2文字>/*** の場合、botsはアクセス拒否
<LocationMatch "\/abc\/[a-z]{2}?\/.*">
        Order Allow,Deny
        Allow from all
        Deny from env=bots
</LocationMatch>

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>