Вы можете использовать URL переписывания, например, через Apache's 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 подстановочные/уловам все записи и извлекать имя пользователя часть до вашего домена с помощью регулярного выражения, например,
function getUserNameFromHost() {
if (!preg_match('`^(\w+)\.u\.domain\.com$`', $_SERVER['HTTP_HOST'], $matches))
return false;
else
return $matches[1];
}
Я не понимаю. Если вы создаете sub.link, это почти похоже на отдельный сайт, на который вы можете добавить функции? – AAA
У вас есть все инструменты, вам нужно выяснить, как их использовать лучше всего для вашей собственной ситуации. Если во всех поддоменах будут отображаться физические различия в файлах, тогда вам нужно будет скопировать ваш базовый набор файлов в новый каталог пользователя, когда пользователь подпишет. Если эти изменения похожи на «настройки», вы можете сохранить эти варианты в базе данных и внести корректировки в страницы на основе пользовательских настроек, и вам не придется создавать отдельный каталог для каждого пользователя. –