2008-08-04 27 views
21

Ich möchte Benutzern die Kontrolle über Sub-Domain einer App, mit der ich liebäugelt, ähnlich wie Basecamp, wo es customusername.seework.com ist.Wie man Subdomain-Benutzerkonten in einer Webanwendung erstellt

Was ist erforderlich auf der DNS Ende zu ermöglichen, dass diese dynamisch erstellt werden und sofort verfügbar sein.

Und wie empfehlen Sie, dies in der Logik der Website zu behandeln? Htaccess Regel, um die Subdomain in der DB zu suchen?

Antwort

13

Die Art, wie wir dies tun, ist es, einen ‚Fang haben all 'für unseren Domainnamen in DNS registriert, so dass anything.ourdomain.com auf unseren Server zeigt.

Mit Apache können Sie einen ähnlichen Catch-All für Ihre Vhosts einrichten. Der Servername muss ein einzelner statischer Name sein, aber die ServerAlias-Direktive kann ein Muster enthalten.

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

Jetzt werden alle Domänen den vhost für unser Projekt auslösen. Der letzte Teil ist der Domain-Name tatsächlich verwendet zu dekodieren, so dass Sie den Benutzernamen in Ihrem Code arbeiten können, so etwas wie (PHP):

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

oder RewriteRule wie bereits vorgeschlagen, dass leise Karten user.ourdomain.com/foo/bar zu www.ourdomain.com/foo/bar?user=user oder was immer du bevorzugst.

+0

Wie richten Sie einen ähnlichen Catch-All auf IIS ein – Vikram

2

Der Trick, um das heißt URL zu verwenden, Umschreiben, so dass name.domain.com transparent abbildet etwas wie domain.com/users/name auf Ihrem Server. Sobald Sie diesen Pfad gestartet haben, ist es relativ einfach zu implementieren.

+0

würde dies zu einer Umleitung und Änderung der URL in der Adressleiste führen?Ich suche nach der URL, um username.domain.com zu bleiben NICHT zu domain.com/username umleiten – parliament

+1

@parliament: Es müsste nicht umgeleitet werden, nein. Das Umschreiben kann transparent sein (z. B. wie fast jede WordPress-Website, die du besuchst, freundliche URLs hat, aber die Anfragen gehen tatsächlich zur index.php). –

8

Sie nicht über DNS und URL Sorge

Ihre DNS-Eintrag Umschreiben wird statisch, so etwas wie:

*.YOURDOMAIN.COM A 123.123.123.123 

Fragen Sie Ihren DNS-Anbieter es für Sie tun (wenn es nicht getan bereits) oder tun Sie es selbst, wenn Sie die Kontrolle über Ihre DNS-Einträge haben. Dadurch werden alle Ihre Subdomains (aktuelle und zukünftige) automatisch auf denselben HTTP-Server verweisen.

Sobald Sie fertig sind, müssen Sie nur HOST-Header für jede einzelne HTTP-Anfrage analysieren, um zu erkennen, welcher Hostname für den Zugriff auf Ihre serverseitigen Skripte auf Ihrem http-Server verwendet wurde.

Sie Unter der Annahme, mit ASP.NET, das ist irgendwie albern Beispiel ich mit, aber Arbeiten kam und zeigt Einfachheit dieses Ansatzes:

<%@ 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

Ich wollte etwas ähnliches tun (www.mysite.com/SomeUser).

Was ich tat, war ich 404.shtml bearbeitet diese Server-Seite enthalten sind (SSI) Code:

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

Dann habe ich die Datei 404.php, wo ich die URL analysiert für den Namen des Benutzers zu überprüfen und zeigten ihre Informationen aus der Datenbank.