Comment créer des comptes d'utilisateur de sous-domaine dans une application web

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 à l'extrémité DNS pour permettre leur création dynamique et être disponible instantanément.

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

0

4 Réponses

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.

0
ajouté
comment configurez-vous un attrape-tout similaire sur IIS
ajouté l'auteur Vikram, source

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.

0
ajouté
@parliament: Il n'aurait pas besoin de rediriger, non. La réécriture peut être transparente (par exemple, comment presque chaque site WordPress que vous visitez a des URL conviviales, mais les demandes vont en fait à index.php).
ajouté l'auteur Dave Ward, source
cela entraînerait-il une redirection et un changement de l'URL dans la barre d'adresse? Je cherche l'URL pour rester username.domain.com PAS pour rediriger vers domain.com/username
ajouté l'auteur parliament, source

Ne vous inquiétez pas de la réécriture du DNS et des 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");
%>
0
ajouté

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

Ce que j'ai fait, c'est que j'ai édité 404.shtml pour inclure ce code include (SSI) côté serveur:

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

Then I created the file 404.php, where I parsed the URL to check for a user's name and showed their info from the database.

0
ajouté