web-applications - utente - gsuite creazione alias




Come creare account utente di sottodomini in una webapp (3)

Il trucco consiste nell'utilizzare la riscrittura dell'URL in modo che name.domain.com si mappi in modo trasparente a qualcosa come domain.com/users/name sul server. Una volta che inizi il percorso, è abbastanza semplice da implementare.

Sto cercando di consentire agli utenti di controllare il sottodominio di un'app con cui sto giocando, proprio come Basecamp dove è customusername.seework.com .

Cosa è richiesto sul lato DNS per consentire che questi vengano creati dinamicamente e disponibili immediatamente.

E come raccomandi di occuparti di questo nella logica del sito? Regola Htaccess per Htaccess il sottodominio nel DB ?


Non preoccuparti di DNS e riscrittura degli URL

Il tuo record DNS sarà statico, qualcosa del tipo:

*.YOURDOMAIN.COM A 123.123.123.123

Chiedi al tuo provider DNS di farlo per te (se non è già stato fatto) o fallo da solo se hai il controllo sui tuoi record DNS. Questo punterà automaticamente tutti i sottodomini (attuali e futuri) nello stesso server HTTP.

Una volta terminato, dovrai solo analizzare l'intestazione HOST su ogni singola richiesta http per rilevare quale nome host è stato utilizzato per accedere agli script sul lato server sul tuo server http.

Supponendo che tu stia usando ASP.NET, questo è un tipo di esempio sciocco, ma funziona 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");
%>

Il modo in cui lo facciamo è avere un 'catch all' per il nostro nome di dominio registrato in DNS in modo che any.ourdomain.com punti al nostro server.

Con Apache puoi configurare un catch-all simile per i tuoi vhost. ServerName deve essere un singolo nome statico ma la direttiva ServerAlias ​​può contenere un modello.

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

Ora tutti i domini attiveranno il vhost per il nostro progetto. La parte finale è quella di decodificare il nome di dominio effettivamente utilizzato in modo da poter elaborare il nome utente nel codice, qualcosa come (PHP):

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

o una RewriteRule come già suggerito che associa silenziosamente user.ourdomain.com/foo/bar a www.ourdomain.com/foo/bar?user=user o qualsiasi altra cosa tu preferisca.





account