Web applications 如何在webapp中创建子域用户帐户

Web applications 如何在webapp中创建子域用户帐户,web-applications,dns,subdomain,account,Web Applications,Dns,Subdomain,Account,我希望允许用户控制我正在玩的应用程序的子域,就像Basecamp一样,它是customusername.seework.com DNS端需要什么才能动态创建并立即可用 你建议如何在网站的逻辑中处理这个问题Htaccess在DB中查找子域的规则?其中的诀窍是使用URL重写,以便name.domain.com透明地映射到服务器上类似domain.com/users/name的内容。一旦你开始这样做,实现起来就相当简单了。不要担心DNS和URL重写问题。 您的DNS记录将是静态的,类似于: *.YOU

我希望允许用户控制我正在玩的应用程序的子域,就像Basecamp一样,它是
customusername.seework.com

DNS
端需要什么才能动态创建并立即可用


你建议如何在网站的逻辑中处理这个问题
Htaccess
DB
中查找子域的规则?

其中的诀窍是使用URL重写,以便name.domain.com透明地映射到服务器上类似domain.com/users/name的内容。一旦你开始这样做,实现起来就相当简单了。

不要担心DNS和URL重写问题。

您的DNS记录将是静态的,类似于:

*.YOURDOMAIN.COM A 123.123.123.123
请您的DNS提供商为您执行此操作(如果尚未执行),或者如果您可以控制您的DNS记录,请自行执行此操作。这将自动将所有子域(当前和将来的子域)指向同一个HTTP服务器

完成后,您只需解析每个http请求上的主机头,即可检测用于访问http服务器上服务器端脚本的主机名

假设您使用的是ASP.NET,这是我提出的一个愚蠢的示例,但它可以工作并演示此方法的简单性:

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

我们这样做的方式是在DNS中注册我们的域名,以便anything.ourdomain.com指向我们的服务器

使用Apache,您可以为vHost设置类似的“全面覆盖”。ServerName必须是单个静态名称,但ServerAlias指令可以包含模式

Servername www.ourdomain.com
ServerAlias *.ourdomain.com
现在,所有域都将触发我们项目的vhost。最后一部分是对实际使用的域名进行解码,以便在代码中计算出用户名,如(PHP):


或者一个重写规则,正如已经建议的那样,将user.ourdomain.com/foo/bar静默地映射到www.ourdomain.com/foo/bar?user=user或任何您喜欢的东西。

我想做一些类似的事情(
www.mysite.com/SomeUser

我所做的是编辑
404.shtml
以包含此服务器端包含(SSI)代码:


如何在IISwould上设置类似的catch all,这会导致地址栏中的url重定向和更改?我正在寻找保留username.domain.com的URL,而不是重定向到domain.com/username@parliament:不需要重定向。重写可以是透明的(例如,您访问的几乎每个WordPress站点都有友好的URL,但请求实际上都会指向index.php)。
list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );
<!--#include virtual="404.php" -- >