検索ロボットに巡回させたくない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>