Для того, чтобы определить язык пользователя и выдать ему соответствующую версию сайта, я пользуюсь данными, присутствующими в глобальной переменной HTTP_ACCEPT_LANGUAGE:
// список языков $sites = array( "en" => "http://en.mysite.com/", "es" => "http://es.mysite.com/", "fr" => "http://fr.mysite.com/", ); // получаем язык $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); // проверяем язык if (!in_array($lang, array_keys($sites))){ $lang = 'en'; } // перенаправление на субдомен header('Location: ' . $sites[$lang]);