web-applications - keosu - logiciel pour créer une application mobile gratuitement




Comment faire des comptes d'utilisateur de sous-domaine dans une application web (3)

L'astuce consiste à utiliser la réécriture d'URL pour que name.domain.com soit mappé de manière transparente à quelque chose comme domain.com/users/name sur votre serveur. Une fois que vous démarrez ce chemin, il est assez simple à mettre en œuvre.

Je cherche à permettre aux utilisateurs de contrôler le sous-domaine d'une application avec laquelle je joue, un peu comme Basecamp où c'est customusername.seework.com .

Ce qui est requis sur la fin du DNS pour permettre à ceux-ci d'être créés dynamiquement et être disponibles instantanément.

Et comment recommandez-vous de traiter cela dans la logique du site? Règle Htaccess pour rechercher le sous-domaine dans la base de DB ?


Ne vous inquiétez pas de la réécriture du DNS et de l'URL

Votre enregistrement DNS sera statique, quelque chose comme:

*.YOURDOMAIN.COM A 123.123.123.123

Demandez à votre fournisseur DNS de le faire pour vous (si ce n'est déjà fait) ou faites-le vous-même si vous avez le contrôle sur vos enregistrements DNS. Cela pointera automatiquement tous vos sous-domaines (actuels et futurs) dans le même serveur HTTP.

Une fois cela fait, vous aurez seulement besoin d'analyser l'en-tête HOST sur chaque requête http unique pour détecter quel nom d'hôte a été utilisé pour accéder à vos scripts côté serveur sur votre serveur http.

En supposant que vous utilisez ASP.NET, c'est un exemple stupide que j'ai trouvé mais qui fonctionne et démontre la simplicité de cette approche:

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

La façon dont nous faisons cela est d'avoir un «tout attraper» pour notre nom de domaine enregistré dans le DNS afin que quelque chose.ourdomain.com pointe vers notre serveur.

Avec Apache, vous pouvez configurer un fourre-tout similaire pour vos hôtes. Le nom de serveur doit être un nom statique unique, mais la directive ServerAlias ​​peut contenir un modèle.

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

Maintenant, tous les domaines vont déclencher le vhost pour notre projet. La dernière partie est de décoder le nom de domaine réellement utilisé afin que vous puissiez trouver le nom d'utilisateur dans votre code, quelque chose comme (PHP):

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

ou une RewriteRule comme déjà suggéré qui mappe silencieusement user.ourdomain.com/foo/bar sur www.ourdomain.com/foo/bar?user=user ou ce que vous préférez.







account