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
?
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.
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");
%>
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.