Подтвердить что ты не робот

Как сделать учетные записи пользователей поддоменов в webapp

Я хочу, чтобы пользователи могли управлять субдоменом приложения, с которым я играю, так же, как Basecamp, где он customusername.seework.com.

Что требуется на конце DNS, чтобы они могли динамически создаваться и быть доступными мгновенно.

А как вы порекомендовали об этом в логике сайта? Htaccess для поиска субдомена в DB?

4b9b3361

Ответ 1

То, как мы это делаем, - это "уловить все" для нашего доменного имени, зарегистрированного в DNS, чтобы что-нибудь .ourdomain.com укажет на наш сервер.

С помощью Apache вы можете настроить подобный catch-all для ваших vhosts. Имя_сервера должно быть одним статическим именем, но директива ServerAlias ​​может содержать шаблон.

Servername www.ourdomain.com
ServerAlias *.ourdomain.com

Теперь все домены вызовут vhost для нашего проекта. Заключительная часть состоит в том, чтобы декодировать фактически используемое доменное имя, чтобы вы могли использовать имя пользователя в своем коде, что-то вроде (PHP):

list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );

или RewriteRule, как уже было сказано, что он молча отображает user.ourdomain.com/foo/bar на www.ourdomain.com/foo/bar?user=user или что вы предпочитаете.

Ответ 2

Не беспокойтесь о перезаписи DNS и URL

Ваша запись DNS будет статичной, например:

*.YOURDOMAIN.COM A 123.123.123.123

Попросите своего DNS-провайдера сделать это за вас (если это еще не сделано) или сделайте это самостоятельно, если у вас есть контроль над вашими записями DNS. Это автоматически укажет все ваши поддомены (текущие и будущие) на один и тот же HTTP-сервер.

После этого вам нужно будет только разобрать заголовок HOST для каждого отдельного HTTP-запроса, чтобы определить, какое имя хоста использовалось для доступа к вашим серверным скриптам на вашем http-сервере.

Предполагая, что вы используете ASP.NET, это своего рода глупый пример, который я придумал, но работает и демонстрирует простоту этого подхода:

<%@ Language="C#" %>
<%
string subDomain = Request.Url.Host.Split('.')[0].ToUpper();
if (subDomain == "CLIENTXXX") Response.Write("Hello CLIENTXXX, your secret number is 33");
else if (subDomain == "CLIENTYYY") Response.Write("Hello CLIENTYYY, your secret number is 44");
else Response.Write(subDomain+" doesn't exist");
%>

Ответ 3

Трюк заключается в использовании перезаписи URL-адресов, чтобы name.domain.com прозрачно сопоставлялся с чем-то вроде domain.com/users/name на вашем сервере. Как только вы начнете с этого пути, это довольно тривиально реализовать.

Ответ 4

Я искал что-то подобное (www.mysite.com/SomeUser).

Что я сделал, я отредактировал 404.shtml, чтобы включить этот код на стороне сервера (SSI):

<!--#include virtual="404.php" -- >

Затем я создал файл 404.php, где я проанализировал URL-адрес, чтобы проверить имя пользователя и показать его информацию из базы данных.