web applications - Comment créer des comptes d'utilisateurs de sous-domaine dans une webapp

Translate

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

Ce qui est requis sur leDNSend pour permettre leur création dynamique et leur disponibilité instantanée.

Et comment recommandez-vous de gérer cela dans la logique du site?Htaccessrègle pour rechercher le sous-domaine dans leDB?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Mat
Translate

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

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

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

Désormais, tous les domaines déclencheront l'hôte virtuel pour notre projet. La dernière partie est de décoder le nom de domaine réellement utilisé afin que vous puissiez travailler sur 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 à www.ourdomain.com/foo/bar?user=user ou ce que vous préférez.

La source
Translate

Ne vous inquiétez pas de la réécriture DNS et 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) vers le même serveur HTTP.

Une fois que c'est fait, vous n'aurez plus qu'à analyser l'en-tête HOST sur chaque requête http pour détecter le nom d'hôte utilisé pour accéder à vos scripts côté serveur sur votre serveur http.

En supposant que vous utilisez ASP.NET, c'est une sorte d'exemple idiot 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 source
Translate

L'astuce consiste à utiliser la réécriture d'URL afin quenom.domaine.comcorrespond de manière transparente à quelque chose commedomain.com/users/namesur votre serveur. Une fois que vous avez commencé sur cette voie, c'est assez simple à mettre en œuvre.

La source
Translate

Je cherchais à faire quelque chose de similaire (www.mysite.com/SomeUser).

Ce que j'ai fait, c'est que j'ai édité404.shtmlpour inclure ce code d'inclusion côté serveur (SSI):

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

Puis j'ai créé le fichier404.php, où j'ai analysé l'URL pour vérifier le nom d'un utilisateur et montré ses informations de la base de données.

La source