web applications nuovo Come creare account utente di sottodomini in una webapp




gsuite creazione alias (4)

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 ?


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.


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

Quello che ho fatto è stato che ho modificato 404.shtml per includere questo 404.shtml include server (SSI):

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

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


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.


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






account