Jak vyrobit uživatelské subdomény účty za webapp

hlasů
21

Těším umožňuje uživatelům ovládat z subdomény z app jsem si pohrávala se, podobně jako Basecamp, kde je customusername.seework.com.

Co je požadováno na DNSkonci, aby tyto být vytvořen dynamicky a musí být k dispozici okamžitě.

A jak se vám doporučujeme do činění s to v logice Online? Htaccesspravidlo pro vyhledávání subdomény se v DB?

Položena 04/08/2008 v 13:22
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
13

Způsob, jakým to udělat, je mít ‚catch all‘ pro náš název domény registrován v DNS, takže anything.ourdomain.com bude ukazovat na našem serveru.

Apache můžete nastavit podobný catch-all pro vaše vhostů. ServerName musí být jeden statický název, ale direktiva ServerAlias ​​může obsahovat vzor.

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

Nyní všechny domény spustí vhost pro náš projekt. Závěrečná část je dekódovat doménové jméno ve skutečnosti použita, takže můžete přijít na jméno ve svém kódu, něco podobného (PHP):

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

nebo RewriteRule, jak již bylo navrženo, aby v duchu mapuje user.ourdomain.com/foo/bar na www.ourdomain.com/foo/bar?user=user nebo co si přejete.

Odpovězeno 04/08/2008 v 14:39
zdroj uživatelem

hlasů
8

Nebojte se o DNS a přepisování URL

Váš záznam DNS bude statická, něco jako:

*.YOURDOMAIN.COM A 123.123.123.123

Zeptejte se svého poskytovatele DNS, aby to pro vás (pokud to není provedeno již), nebo to udělat sami, pokud máte kontrolu nad svými DNS záznamů. To bude automaticky ukazovat všechny subdomén (současné a budoucí nich) do stejného serveru HTTP.

Jakmile je to hotovo, budete potřebovat pouze analyzovat hlavičku hostitele na každou žádost http odhalit, co hostname byl použit pro přístup k skripty na straně serveru na http serveru.

Za předpokladu, že jste pomocí ASP.NET, je to trochu hloupé Například jsem přišel, ale funguje a demonstruje jednoduchost tohoto přístupu:

<%@ 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");
%>
Odpovězeno 04/08/2008 v 13:32
zdroj uživatelem

hlasů
2

Trik k tomu je použít přepisování URL, takže name.domain.com transparentně mapuje na něco takového domain.com/users/name na svém serveru. Jakmile začnete touto cestou, je to poměrně triviální realizovat.

Odpovězeno 04/08/2008 v 13:28
zdroj uživatelem

hlasů
0

Díval jsem se na něco podobného ( www.mysite.com/SomeUser).

To, co jsem udělal, bylo, jsem upravil 404.shtml, aby se tato na straně serveru zahrnuje (SSI) kód:

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

Pak jsem vytvořil soubor 404.php, kde jsem analyzované URL pro kontrolu uživatelského jména a ukázal své údaje z databáze.

Odpovězeno 12/10/2009 v 16:28
zdroj uživatelem

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