Come rendere gli account utente sottodominio in una webapp

voti
21

Sto cercando di consentire agli utenti di controllare di sottodominio di un app che sto accarezzando, tanto come Basecamp dove si trova customusername.seework.com.

Ciò che è richiesto alla DNSfine di permettere questi per essere creati in modo dinamico ed essere disponibili immediatamente.

E come mi consiglia affrontare questo nella logica del sito? Htaccessregola per cercare il sottodominio nel DB?

È pubblicato 04/08/2008 alle 13:22
fonte dall'utente
In altre lingue...                            


4 risposte

voti
13

Il nostro modo di fare questo è di avere un 'fermo tutto' per il nostro nome di dominio registrato in DNS in modo che anything.ourdomain.com punterà al nostro server.

Con Apache è possibile impostare un simile catch-all per le vostre vhosts. Il ServerName deve essere un nome statica singola ma la direttiva ServerAlias ​​può contenere un modello.

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

Ora, tutti i domini si innescherà il vhost per il nostro progetto. La parte finale è quello di decodificare il nome di dominio in realtà utilizzato in modo che si può lavorare il nome utente nel codice, qualcosa di simile (PHP):

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

o un RewriteRule come già suggerito che le mappe in silenzio user.ourdomain.com/foo/bar a www.ourdomain.com/foo/bar?user=user~~V~~3rd o quello che preferite.

Risposto il 04/08/2008 a 14:39
fonte dall'utente

voti
8

Non preoccupatevi di DNS e la riscrittura degli URL

Il tuo record DNS sarà statico, qualcosa di simile a:

*.YOURDOMAIN.COM A 123.123.123.123

Chiedi al tuo provider DNS di farlo per voi (se non è già fatto), o farlo da soli se si ha il controllo sui record DNS. Questo indicherà automaticamente tutti i sottodomini (quelli attuali e futuri) nella stessa server HTTP.

Una volta fatto, si avrà solo bisogno di analizzare intestazione HOST su ogni singola richiesta HTTP per rilevare quanto hostname è stato utilizzato per accedere ai vostri script lato server sul server http.

Supponendo che si sta utilizzando ASP.NET, questo è una specie di esempio stupido mi è venuta, ma opere e dimostra la semplicità di questo approccio:

<%@ 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");
%>
Risposto il 04/08/2008 a 13:32
fonte dall'utente

voti
2

Il trucco per che è quello di utilizzare la riscrittura degli URL in modo che name.domain.com le mappe in modo trasparente a qualcosa di simile domain.com/users/name sul server. Una volta che si avvia su questa strada, è abbastanza banale da implementare.

Risposto il 04/08/2008 a 13:28
fonte dall'utente

voti
0

Stavo cercando di fare qualcosa di simile ( www.mysite.com/SomeUser).

Quello che ho fatto è stato Ho modificato 404.shtmlper includere questo lato server (SSI) Codice:

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

Poi ho creato il file 404.php, dove ho analizzato l'URL per richiedere il nome di un utente e mostrato le loro informazioni dal database.

Risposto il 12/10/2009 a 16:28
fonte dall'utente

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