Как определить что поисковый бот а не человек?
Вот есть решение на всех известных ботов:function isBot(&$botname = ''){
/* Эта функция будет проверять, является ли посетитель роботом поисковой системы */
  $bots = array(
    'rambler','googlebot','aport','yahoo','msnbot','turtle','mail.ru','omsktele',
    'yetibot','picsearch','sape.bot','sape_context','gigabot','snapbot','alexa.com',
    'megadownload.net','askpeter.info','igde.ru','ask.com','qwartabot','yanga.co.uk',
    'scoutjet','similarpages','oozbot','shrinktheweb.com','aboutusbot','followsite.com',
    'dataparksearch','google-sitemaps','appEngine-google','feedfetcher-google',
    'liveinternet.ru','xml-sitemaps.com','agama','metadatalabs.com','h1.hrn.ru',
    'googlealert.com','seo-rus.com','yaDirectBot','yandeG','yandex',
    'yandexSomething','Copyscape.com','AdsBot-Google','domaintools.com',
    'Nigma.ru','bing.com','dotnetdotcom'
  );
  foreach($bots as $bot)
    if(stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false){
      $botname = $bot;
      return true;
    }
  return false;
}
Использование:if( isBot($bname) ) {
   // Перебрасываем на Москву
}
Спасибо Евгений Калибров за скрипт. Пользовался данным скриптом некоторое время. Позже решил упростить его. Мой скрипт универсальный, ловит любого робота: Google, Yandex, Yahoo и Bing. Он удобен тем, что не нужно перечислять роботов каждого отдельно и здесь мы обходимся без циклов, что работает в несколько раз быстрее. Проверено, ботов находит идеально! Пробуйте и юзайте на здоровье.

class ScanBot
{

    public function isBot()
    {

        $down_reg = mb_strtolower($_SERVER['HTTP_USER_AGENT']);
        $down_reg = str_replace(array(' '), '', $down_reg);

        $find_bot_step1 = str_replace(array('yandex', 'google', 'yahoo', 'bing'), ' this_is_bot! ', $down_reg);
        $find_bot_step2 = explode(' ', $find_bot_step1);

        if ($find_bot_step2[1] == "this_is_bot!") {
            return true;
        }

        return false;
    }
}