Вы можете использовать перезапись URL, например, через Apache mod_rewrite , чтобы решить эту проблему.
Однако по соображениям безопасности и практическим соображениям я не рекомендую использовать что-то вроде username.domain.com
, если вы тщательно не отфильтруете имена пользователей, например www
.
Лучше использовать username.u.domain.com
или что-то подобное.
Вот пример для переписывания правил с использованием перенаправления HTTP.
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteCond %{HTTP_HOST} ^([^.]+)\.u\.domain\.com$
RewriteRule .* http://domain.com/user/%1 [R,L]
В качестве альтернативы, вы также можете использовать DNS-символ подстановки / catch-all и извлечь часть имени пользователя перед вашим доменом, используя регулярное выражение, например,
function getUserNameFromHost() {
if ( !preg_match('`^(\w+)\.u\.domain\.com$`', $_SERVER['HTTP_HOST'], $matches) )
return false;
else
return $matches[1];
}