2008-08-04 15 views
21

Kullanıcıların, customusername.seework.com olduğu Basecamp gibi, benim oynuyor olduğum bir uygulamanın alt alan adını kontrol etmesine izin vermek istiyorum.Bir webapp'ta subdomain kullanıcı hesapları nasıl yapılır

DNS ucunda bunların dinamik olarak oluşturulmasına ve anında erişilebilir olmasına izin vermek için ne gereklidir.

Ve bu sitenin mantığında bunu nasıl öneriyorsunuz? Htaccess, DB'daki alt etki alanını aramak için kural mı?

cevap

13

biz bunu yolu 'catch sahip olmaktır: sizi varsayarsak

, bu şimdiye ancak işler ile geldi biraz saçma örneğidir ve bu yaklaşımın sadeliğini gösteriyor ASP.NET kullanıyorsanız all 'alan adımız için DNS'ye kayıtlı, böylece bir domain.alanadimiz.com sunucumuza işaret edecektir.

Apache ile sankonlarınız için benzer bir yakalama ayarlayabilirsiniz. SunucuAdı tek bir statik ad olmalıdır, ancak ServerAlias ​​yönergesi bir kalıp içerebilir.

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

Artık tüm etki alanları projemiz için hayaleti tetikleyecektir. Son bölüm kodunuzda adınızı çalışmak, böylece gerçekte kullanılan alan adını deşifre etmek, (PHP) gibi bir şey:

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

veya RewriteRule olarak zaten sessizce user.ourdomain.com haritalar önerdi www.ourdomain.com/foo/bar?user=user adresine veya/veya tercihinize göre/foo/bar.

+0

IIS'de benzer bir tümünü nasıl yüklersiniz? – Vikram

2

hüner name.domain.com şeffaf sunucu üzerinde domain.com/users/name gibi bir şey eşleştiren böylece yeniden yazma URL kullanmaktır. Bu yola başladığınızda, uygulanması oldukça basittir.

+0

, bu durum adres çubuğunda bir yönlendirme ve URL'nin değiştirilmesiyle sonuçlanır mı?Domain.com kullanıcı adını değiştirmemesi gereken URL'yi arıyorum. [email protected] – parliament

+1

@parliament: Yönlendirmeye gerek yok, hayır. Yeniden yazma saydam olabilir (ör. Ziyaret ettiğiniz neredeyse her WordPress sitesinin arkadaşça URL'leri vardır, ancak istekler aslında index.php'ye gider). –

8
statik olacak

DNS kaydını yeniden yazma DNS ve URL hakkında endişelenmeyin

, gibi bir şey:

*.YOURDOMAIN.COM A 123.123.123.123 

bitti değilse (sizin için bunu yapmak için DNS sağlayıcınıza sor zaten) veya DNS kayıtlarınız üzerinde kontrolünüz varsa kendi başınıza yapın. Bu, tüm alt etki alanlarınızı (şimdiki ve gelecekteki) aynı HTTP sunucusuna otomatik olarak işaret edecektir.

Tamamlandıktan sonra, http sunucunuzdaki sunucu tarafı komut dosyalarınıza erişmek için hangi ana makine adının kullanıldığını algılamak için yalnızca her bir http isteğindeki HOST üstbilgisini ayrıştırmanız gerekir.

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

Benzer bir şey (www.mysite.com/SomeUser) yapmaya bakıyordu. Yaptıklarımı

bu sunucu tarafı dahil etmek 404.shtml düzenlenmiş bulunmaktadır (SSI) kodu oldu: O zaman bir kullanıcının adını kontrol etmek URL'yi ayrıştırılmış dosyayı 404.php, oluşturulan ve gösterdi

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

onların veritabanından bilgi.

İlgili konular