web applications - So erstellen Sie Subdomain-Benutzerkonten in einer Webanwendung

Translate

Ich möchte Benutzern ermöglichen, die Subdomain einer App zu steuern, mit der ich spiele, ähnlich wie Basecamp, wo sie sich befindetcustomusername.seework.com.

Was ist auf dem erforderlichDNSEnde, damit diese dynamisch erstellt werden können und sofort verfügbar sind.

Und wie empfehlen Sie, in der Logik der Site damit umzugehen?HtaccessRegel zum Nachschlagen der Subdomain in derDB?

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

Alle Antworten

Mat
Translate

Die Art und Weise, wie wir dies tun, besteht darin, einen "Catch All" für unseren Domain-Namen in DNS zu registrieren, damit any.ourdomain.com auf unseren Server verweist.

Mit Apache können Sie ein ähnliches Allheilmittel 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 lösen alle Domains den vhost für unser Projekt aus. Der letzte Teil besteht darin, den tatsächlich verwendeten Domainnamen zu dekodieren, damit Sie den Benutzernamen in Ihrem Code ermitteln können, etwa (PHP):

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

oder eine RewriteRule, wie bereits vorgeschlagen, die user.ourdomain.com/foo/bar stillschweigend www.ourdomain.com/foo/bar?user=user oder was auch immer Sie bevorzugen zuordnen.

Quelle
Translate

Machen Sie sich keine Sorgen über das Umschreiben von DNS und URLs

Ihr DNS-Eintrag ist statisch, etwa:

*.YOURDOMAIN.COM A 123.123.123.123

Bitten Sie Ihren DNS-Anbieter, dies für Sie zu tun (falls dies noch nicht geschehen ist) oder selbst, wenn Sie die Kontrolle über Ihre DNS-Einträge haben. Dadurch werden automatisch alle Ihre Subdomains (aktuelle und zukünftige) auf denselben HTTP-Server verweisen.

Sobald dies erledigt ist, müssen Sie nur noch den HOST-Header für jede einzelne http-Anforderung analysieren, um festzustellen, welcher Hostname für den Zugriff auf Ihre serverseitigen Skripts auf Ihrem http-Server verwendet wurde.

Angenommen, Sie verwenden ASP.NET, ist dies ein dummes Beispiel, das ich mir ausgedacht habe, das aber funktioniert und die Einfachheit dieses Ansatzes demonstriert:

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

Der Trick dabei ist, das Umschreiben von URLs zu verwendenname.domain.comwird transparent auf so etwas abgebildetdomain.com/users/nameauf Ihrem Server. Sobald Sie diesen Weg eingeschlagen haben, ist die Implementierung ziemlich trivial.

Quelle
Translate

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

Was ich getan habe, war ich bearbeitet404.shtmlUm diesen serverseitigen Include-Code (SSI) einzuschließen:

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

Dann habe ich die Datei erstellt404.php, wo ich die URL analysiert habe, um nach dem Namen eines Benutzers zu suchen, und dessen Informationen aus der Datenbank angezeigt habe.

Quelle