【问题标题】:How to make subdomain user accounts in a webapp如何在 webapp 中创建子域用户帐户
【发布时间】:2010-09-05 07:07:06
【问题描述】:

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

DNS 端需要什么才能动态创建这些内容并立即可用。

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

【问题讨论】:

    标签: web-applications dns subdomain account


    【解决方案1】:

    我们这样做的方式是为我们在 DNS 中注册的域名设置一个“包罗万象”,这样 any.ourdomain.com 将指向我们的服务器。

    使用 Apache,您可以为您的虚拟主机设置类似的包罗万象。 ServerName 必须是单个静态名称,但 ServerAlias 指令可以包含模式。

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

    现在所有域都将触发我们项目的虚拟主机。最后一部分是解码实际使用的域名,以便您可以在代码中计算出用户名,例如(PHP):

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

    或如已建议的 RewriteRule,将 user.ourdomain.com/foo/bar 静默映射到 www.ourdomain.com/foo/bar?user=user 或您喜欢的任何内容。

    【讨论】:

    • 如何在 IIS 上设置类似的包罗万象
    【解决方案2】:

    不用担心 DNS 和 URL 重写

    您的 DNS 记录将是静态的,例如:

    *.YOURDOMAIN.COM A 123.123.123.123
    

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

    完成后,您只需解析每个 http 请求的 HOST 标头,以检测用于访问 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");
    %>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这会导致地址栏中的网址重定向和更改吗?我正在寻找保留 username.domain.com 的 URL,而不是重定向到 domain.com/username
      • @parliament:不需要重定向,不。重写可以是透明的(例如,您访问的几乎每个 WordPress 站点都有友好的 URL,但请求实际上是转到 index.php)。
      【解决方案4】:

      我想做类似的事情 (www.mysite.com/SomeUser)。

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

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

      然后我创建了文件404.php,我在其中解析 URL 以检查用户名并显示数据库中的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 2013-01-05
        • 2019-02-03
        • 1970-01-01
        相关资源
        最近更新 更多