2008-08-04 7 views
21

Estoy buscando permitir a los usuarios controlar el subdominio de una aplicación con la que estoy jugando, al igual que Basecamp, donde es customusername.seework.com.Cómo crear cuentas de usuario de subdominio en una aplicación web

Lo que se requiere en el extremo DNS para permitir que estos se creen dinámicamente y estén disponibles al instante.

¿Y cómo recomiendas lidiar con esto en la lógica del sitio? Htaccess regla para buscar el subdominio en el DB?

Respuesta

13

La forma de hacer esto es tener un 'retén todo 'para nuestro nombre de dominio registrado en DNS para que anything.ourdomain.com apunte a nuestro servidor.

Con Apache puede configurar un catch-all similar para sus fantasmas. El ServerName debe ser un único nombre estático, pero la directiva ServerAlias ​​puede contener un patrón.

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

Ahora todos los dominios activarán el vhost para nuestro proyecto. La parte final es decodificar el nombre de dominio utilizado realmente para que pueda resolver el nombre de usuario en su código, algo así como (PHP):

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

o una RewriteRule como ya se sugirió que en silencio mapas user.ourdomain.com/foo/bar a www.ourdomain.com/foo/bar?user=user o lo que prefiera.

+0

cómo configurar un catch-all similar en IIS – Vikram

2

El truco para esto es utilizar la reescritura de URL para que name.domain.com mapas de forma transparente a algo así como domain.com/users/name en su servidor. Una vez que empiezas por ese camino, es bastante trivial de implementar.

+0

¿Esto daría como resultado una redirección y un cambio de la URL en la barra de direcciones?Estoy buscando la URL para seguir siendo username.domain.com NO redireccionar a domain.com/username – parliament

+1

@parliament: no necesitaría redirigir, no. La reescritura puede ser transparente (por ejemplo, casi todos los sitios de WordPress que visita tienen URL amigables, pero las solicitudes van a index.php). –

8

No se preocupe de DNS y la reescritura de URL

Su registro DNS será estática, algo así como:

*.YOURDOMAIN.COM A 123.123.123.123 

Pregunte a su proveedor de DNS para que lo haga por usted (si no lo ha hecho ya) o hacerlo usted mismo si tiene control sobre sus registros DNS. Esto apuntará automáticamente todos sus subdominios (actuales y futuros) al mismo servidor HTTP.

Una vez hecho, solo tendrá que analizar el encabezado HOST en cada solicitud HTTP para detectar qué nombre de host se utilizó para acceder a las secuencias de comandos del servidor en su servidor http.

Suponiendo que está utilizando ASP.NET, esto es una especie de ejemplo tonto que se me ocurrió, pero funciona y demuestra la simplicidad de este enfoque:

<%@ 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"); 
%> 
0

Estaba buscando hacer algo similar (www.mysite.com/SomeUser).

Lo que hice fue edité 404.shtml incluir esta inclusión del servidor (SSI) Código:

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

Luego he creado el archivo 404.php, donde Analizada la dirección URL para comprobar si un nombre de usuario y mostró su información de la base de datos.

Cuestiones relacionadas