Como fazer contas de usuário subdomínio em um webapp

votos
21

Eu estou olhando para permitir aos usuários controlar de subdomínio de um aplicativo que estou brincando com, bem como Basecamp onde é customusername.seework.com.

O que é necessário no DNSfim para permitir que estes sejam criados dinamicamente e estará disponível instantaneamente.

E como você recomenda lidar com isso na lógica do site? Htaccessgovernar para procurar o subdomínio no DB?

Publicado 04/08/2008 em 13:22
fonte usuário
Em outras línguas...                            


4 respostas

votos
13

A nossa maneira de fazer isso é ter um 'catch all' para o nosso nome de domínio registrado no DNS para que anything.ourdomain.com irá apontar para o nosso servidor.

Com Apache você pode configurar um pega-tudo semelhante para seus vhosts. O ServerName deve ser um único nome estático, mas a directiva ServerAlias ​​pode conter um padrão.

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

Agora todos os domínios irá acionar o vhost para o nosso projeto. A parte final é para decodificar o nome de domínio realmente utilizados de modo que você pode trabalhar para fora o nome de usuário em seu código, algo como (PHP):

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

ou um RewriteRule como já sugeriu que silenciosamente mapeia user.ourdomain.com/foo/bar para www.ourdomain.com/foo/bar?user=user ou o que você preferir.

Respondeu 04/08/2008 em 14:39
fonte usuário

votos
8

Não se preocupe com DNS e regravação de URL

Seu registro de DNS será estático, algo como:

*.YOURDOMAIN.COM A 123.123.123.123

Pergunte ao seu provedor de DNS para fazer isso por você (se ainda não estiver feito) ou fazê-lo por si mesmo se você tem controle sobre seus registros de DNS. Isto irá apontar automaticamente todos os seus subdomínios (actuais e futuros) para o mesmo servidor HTTP.

Uma vez feito isso, você só vai precisar para analisar cabeçalho HOST em cada única solicitação HTTP para detectar o nome do host foi usado para acessar seus scripts do lado do servidor no seu servidor http.

Supondo que você está usando ASP.NET, este é o tipo de exemplo bobo eu vim com mas obras e demonstra simplicidade desta abordagem:

<%@ 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");
%>
Respondeu 04/08/2008 em 13:32
fonte usuário

votos
2

O truque para isso é usar a reescrita de URL para que name.domain.com mapeia de forma transparente para algo como domain.com/users/name no seu servidor. Uma vez que você começar por esse caminho, é bastante trivial de implementar.

Respondeu 04/08/2008 em 13:28
fonte usuário

votos
0

Eu estava olhando para fazer algo semelhante ( www.mysite.com/SomeUser).

O que eu fiz foi editada 404.shtmlpara incluir esse lado do servidor incluir código (SSI):

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

Então eu criei o arquivo 404.php, onde eu analisado o URL para verificar se há um nome de usuário e mostrou suas informações do banco de dados.

Respondeu 12/10/2009 em 16:28
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more