Vă mulțumim pentru susținere

Cum de a crea conturi de utilizator subdomeniu într-un webapp

Caut pentru a permite utilizatorilor să controleze subdomeniul unei aplicații cu care mă joc, la fel ca Basecamp unde este customusername.seework.com .

Ce este necesar în capătul DNS pentru a permite ca acestea să fie create dinamic și să fie disponibile instantaneu.

Și cum vă recomandăm să vă ocupați de acest lucru în logica site-ului? Htaccess pentru a căuta subdomeniul în DB ?

0
adăugat editat

4 răspunsuri

Modul în care facem acest lucru este să avem un "captură totală" pentru numele de domeniu înregistrat în DNS, astfel încât anything.ourdomain.com să indice către serverul nostru.

Cu Apache puteți configura o captură similară pentru toate vhosts. ServerName trebuie să fie un singur nume static, dar directiva ServerAlias ​​poate conține un model.

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

Acum toate domeniile vor declansa vhost-ul pentru proiectul nostru. Partea finală este de a decoda numele de domeniu utilizat efectiv, astfel încât să puteți elabora numele de utilizator în codul dvs., ceva de genul (PHP):

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

sau un RewriteRule, așa cum a sugerat deja că în mod silențios hărți user.ourdomain.com/foo/bar la www.ourdomain.com/foo/bar?user=user sau orice doriți.

0
adăugat
cum se configurează o captură similară pe tot IIS
adăugat autor Vikram

Succesul este acela de a utiliza rescrierea URL-ului, astfel încât name.domain.com să fie hărțuită în mod transparent în ceva de tipul domain.com/users/name pe serverul dvs. Odată ce începeți această cale, este destul de banal să implementați.

0
adăugat
@parlamentar: nu ar trebui să redirecționeze, nu. Rescrierea poate fi transparentă (de exemplu, modul în care aproape fiecare site WordPress pe care îl vizitați are adrese URL prietenoase, dar cererile se referă de fapt la index.php).
adăugat autor Dave Ward
aceasta ar duce la redirecționarea și modificarea adresei URL din bara de adrese? Caut URL-ul să rămână numele de utilizator.domeniu.com NU să redirecționeze la domain.com/username
adăugat autor parliament

Nu vă faceți griji cu privire la rescrierea DNS și URL-ul

Înregistrarea dvs. DNS va fi statică, cum ar fi:

*.YOURDOMAIN.COM A 123.123.123.123

Cereți-i furnizorului DNS să facă acest lucru pentru dvs. (dacă nu este deja făcut) sau să o faceți singur dacă aveți control asupra înregistrărilor dvs. DNS. Aceasta va indica automat toate subdomeniile dvs. (curente și viitoare) în același server HTTP.

Odată ce ați terminat, va trebui doar să analizați antetul HOST pe fiecare solicitare http pentru a detecta ce nume de gazdă a fost folosit pentru a accesa scripturile de pe server de pe serverul http.

Presupunând că folosiți ASP.NET, acest lucru este un exemplu de prostie pe care am venit, dar operează și demonstrează simplitatea acestei abordări:

<%@ 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
adăugat

M-am uitat să fac ceva similar ( www.mysite.com/SomeUser ).

Ceea ce am făcut a fost că am editat 404.shtml pentru a include acest cod server (SSI):

0
adăugat