Comment faire des comptes d'utilisateur dans un sous-domaine webapp

voix
21

Je cherche à permettre aux utilisateurs de contrôler des sous - domaine d'une application que je suis en train de jouer avec, un peu comme Basecamp où il est customusername.seework.com.

Que faut -il à la DNSfin pour permettre à ces à créer dynamiquement et être disponible instantanément.

Et comment recommandez-vous traiter ce dans la logique du site? Htaccessla règle dans la pour rechercher le sous - domaine DB?

Créé 04/08/2008 à 13:22
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
13

La façon dont nous le faisons est d'avoir un « fourre-tout » pour notre nom de domaine enregistré dans le DNS afin que anything.ourdomain.com pointera vers notre serveur.

Avec Apache, vous pouvez mettre en place un fourre-tout similaire pour votre vhosts. Le ServerName doit être un seul nom statique, mais la directive ServerAlias ​​peut contenir un motif.

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

Maintenant, tous les domaines déclenchera le vhost pour notre projet. La dernière partie est de décoder le nom de domaine effectivement utilisé pour que vous puissiez travailler sur le nom d'utilisateur dans votre code, quelque chose comme (PHP):

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

ou un RewriteRule comme cela a déjà suggéré que les cartes en silence user.ourdomain.com/foo/bar à www.ourdomain.com/foo/bar?user=user~~V~~3rd ou tout ce que vous préférez.

Créé 04/08/2008 à 14:39
source utilisateur

voix
8

Ne vous inquiétez pas DNS et URL rewriting

Votre enregistrement DNS sera statique, quelque chose comme:

*.YOURDOMAIN.COM A 123.123.123.123

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

Une fois qu'il est fait, vous aurez seulement besoin d'analyser tête HOST sur chaque requête HTTP 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, ce genre d'exemple est stupide je suis venu avec, mais des œuvres 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");
%>
Créé 04/08/2008 à 13:32
source utilisateur

voix
2

L'astuce pour est d'utiliser la réécriture d' URL afin que name.domain.com cartes transparente à quelque chose comme domain.com/users/name sur votre serveur. Une fois que vous commencez dans cette voie, il est assez trivial à mettre en œuvre.

Créé 04/08/2008 à 13:28
source utilisateur

voix
0

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

Ce que j'ai été j'edited 404.shtmld'inclure ce côté serveur comprennent (SSI) Code:

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

Ensuite , j'ai créé le fichier 404.php, où j'analysables l'URL pour vérifier le nom d'utilisateur et montré leurs informations à partir de la base de données.

Créé 12/10/2009 à 16:28
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more