Jak zrobić kont subdomeny w webapp

głosy
21

Szukam, aby umożliwić użytkownikom sterować z subdomenie aplikacji jestem bawiąc się, podobnie jak Basecamp gdzie jest customusername.seework.com.

Co jest wymagane na DNSkoniec, aby umożliwić te mają być tworzone dynamicznie i być dostępne natychmiast.

I jak można polecić do czynienia z tym w logice stronie? Htaccessrządzić do wyszukiwania subdomenę w DB?

Utwórz 04/08/2008 o 13:22
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
2

Trick jest użycie URL przepisywanie tak że name.domain.com transparentnie odwzorowuje coś podobnego domain.com/users/name na serwerze. Po uruchomieniu w dół tą drogą, to dość trywialny do wdrożenia.

Odpowiedział 04/08/2008 o 13:28
źródło użytkownik

głosy
8

Nie martw się o DNS i przepisywanie URL

Twój rekord DNS będą statyczne, coś jak:

*.YOURDOMAIN.COM A 123.123.123.123

Zapytaj swojego dostawcy DNS to zrobić dla Ciebie (jeśli nie jest już zrobione) lub zrobić samemu, jeśli masz kontrolę nad swoimi rekordami DNS. Spowoduje to automatyczne wskazać wszystkie subdomeny (obecnych i przyszłych działań) do tego samego serwera HTTP.

Raz to zrobić, trzeba tylko do analizowania nagłówka hosta na każde żądanie http wykrycia pojedynczego hosta, co zostało wykorzystane w celu uzyskania dostępu skryptów po stronie serwera na serwerze http.

Zakładając, że używasz ASP.NET, to trochę głupie przykład wymyśliłem, ale działa i pokazuje prostotę tego podejścia:

<%@ 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");
%>
Odpowiedział 04/08/2008 o 13:32
źródło użytkownik

głosy
13

Sposób, w jaki to zrobić, to mieć „catch all” dla naszej nazwy domeny zarejestrowanej w DNS tak, że anything.ourdomain.com będzie wskazywać na naszym serwerze.

Z Apache można skonfigurować podobny catch-all dla swoich vhostów. ServerName musi być pojedyncza nazwa statyczne, ale dyrektywa ServerAlias ​​może zawierać wzór.

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

Teraz wszystkie domeny wywoła vhosta dla naszego projektu. Końcowa część to rozszyfrować nazwę domeny rzeczywiście używany tak, że można wypracować użytkownika w kodzie, coś podobnego (PHP):

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

lub RewriteRule jak już zasugerował, że po cichu odwzorowuje user.ourdomain.com/foo/bar do www.ourdomain.com/foo/bar?user=user czy co wolisz.

Odpowiedział 04/08/2008 o 14:39
źródło użytkownik

głosy
0

Szukałem coś podobnego ( www.mysite.com/SomeUser).

Co ja zrobiłem było edytowane 404.shtmlw celu włączenia tej Server Side Includes (SSI) Kod:

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

Następnie stworzyłem plik 404.php, gdzie analizowany URL, aby sprawdzić nazwy użytkownika i pokazał swoje informacje z bazy danych.

Odpowiedział 12/10/2009 o 16:28
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more