为每个用户创建专用URL(ASP .net)

时间:2009-08-16 08:40:23

标签: asp.net

我想允许我的用户拥有自己的专用网址,例如,如果我的网址是www.XYZ.com,我的用户将拥有www.NAME.XYZ.com或www.XYZ.com/NAME。< / p>

目前您可以访问www.XYZcom / Member.aspx查看他们的页面?userID =“012345”

现在我想以某种方式将URL映射到当前系统。

我不知道我需要做什么,我似乎有很多网站都这样做了,所以我希望我可以在ASP .net中做同样的事情。

先谢谢你。 干杯

3 个答案:

答案 0 :(得分:2)

如果您的域名DNS记录指向该站点的IP地址,您应该能够使用任何东西访问该站点.XYZ.com。

创建用户帐户时,您需要为其指定一个唯一的子域名,然后在用户使用其域名访问该站点时检测到该名称(请参阅下面的代码)

/// <summary>
        /// Gets the Current SubDomain
        /// </summary>
        /// <returns></returns>
        public static string GetSubDomain()
        {
            string subDomain = String.Empty;

            if (HttpContext.Current.Request.Url.HostNameType == UriHostNameType.Dns)
            {
                subDomain = Regex.Replace(HttpContext.Current.Request.Url.Host, "((.*)(\\..*){2})|(.*)", "$2");
            }

            if (subDomain.Length == 0)
            {
                subDomain = "www";
            }

            return subDomain;
        }

答案 1 :(得分:2)

如果您需要使用IIS和ASP.NET执行此操作,我认为此方法将起作用:

  1. 使用允许您注册通配符域的DNS主机。这样你就可以注册****。xyz.com ***来指向你的服务器。
  2. 现在出现了你可能不喜欢的部分;为了在IIS上工作,您需要将您的网站设置为“默认网站”。这样,即使子域不在该站点的标题列表中,所有请求也将到达您的站点。如果您的站点托管在共享的虚拟主机上,则无法使用此功能。
  3. 使用Marks方法检测用户输入的域名。

答案 2 :(得分:2)

HI, 您可以在应用程序中使用URL重写。使用此功能,您可以将以下网址重定向:www.XYZ.com/012345到以下页面:www.XYZ.com/Member.aspx?userID="012345“。您可以从microsoft网站下载URL Rewriter示例。将URLRewriter.dll引用添加到您的网站后。将以下行添加到您网站中的web.config文件后:

  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/([a-z]+)-([a-z]+)\.html</LookFor>
        <SendTo>~/Contact.aspx?FirstName=$1&amp;LastName=$2</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

以上代码将www.mydomain.com/name-family.html等网址(使用URLRewriter库)重定向到www.mydomain.com/Contact.aspx?FirstName=name&LastName=family,您可以将其更改为套件需要。对于我的情况,LookFor标签的内容是一些正则表达式,你应该编写自己的正则表达式。

您可以在MSDN上查看该文章并下载源代码here