实现网站注册用户动态绑定个性域名

实现网站注册用户动态绑定个域名
老板说要建个二极域名,下面将二级域名的实现方式贴出来:

第一步:把域名设置成泛解析.
就是把*.域名 解析到你的主机,是否支持泛解析,请查看你的域名商说明.

第二步:IIS设成的时候不要绑定域名.注意一台服务器里只能有一个站点不绑定域名
就是*.域名的默认访问页.

第三步:默认页里加入以下代码:关键部分如下:
string sURL=Context.Request.ServerVariables["HTTP_HOST"].ToLower();
sURL就是获取的域名部分 .
xxx.域名
对应的xxx就是用户名.然后查库里的记录,如xxx对应的是www.csdn.net那就就把
它转向到www.csdn.net 或者写一个框架页隐藏直实域名


第三步也可以写成HttpHandler或者HttpModule模块来处理
 HttpHandler模块:
public class DnsHttpHandler: IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string sUSER;
        UserDns user;
        string userDomain = string.Empty;
        string sURL = context.Request.ServerVariables["HTTP_HOST"].ToLower();
        if (sURL.IndexOf("@" == -1 && sURL.IndexOf("." == -1)))
        {
            //判段域名,转向默认网址
            context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL, true);
        }

        #region myhome设置
        if (sURL == "保留域名")
        {
            context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL, true);
        }
        #endregion
        #region 判段并获取用户名
        sUSER = Utility.DomainToUser(sURL);
        userDomain = Utility.GetFirstDomain(sURL);
        //context.Response.Write(userDomain);
        //context.Response.End();
        user = Users.GetUserDns(sUSER, userDomain);

        if (user == null)
        {
            context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL, true);
        }

        context.Response.Write("<meta http-equiv=refresh content=/"0;url=" + user.RedirectURL.Trim() + "/">");


        #endregion
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

 提取用户名模块:
public class Utility
{
    public static string DomainToUser(string domain)
    {
        string username = string.Empty;
        string[] first_name;
        #region 判段并获取用户名

        if (domain.IndexOf("@" == -1 && domain.IndexOf("." == -1)))
        {
            return username;
        }
        if (domain.IndexOf("." != -1))
        {
            first_name = domain.Split('.');
            if (first_name[0] == "www")
            {
                username = first_name[1];
            }
            else
            {
                username = first_name[0];
            }
        }
        if (domain.IndexOf("@" != -1))
        {
            first_name = domain.Split('@');
            if (first_name[0] == "www")
            {
                username = first_name[1];
            }
            else
            {
                username = first_name[0];
            }
        }
        #endregion

        return username;
    }

    public static string GetFirstDomain(string domain)
    {
        string[] first_name;
        domain = domain.Replace('@', '.');
        string temp = string.Empty;
        if (domain.StartsWith("www."))
        {
            domain = domain.Replace("www.", "");
        }
        if (domain.IndexOf('.') != -1)
        {
            first_name = domain.Split('.');
        }
        else
            return string.Empty;
        if (first_name.Length == 2)
        {
            //sb.Append("{0}.{1}",first_name[0])
            return String.Format("{0}.{1}", first_name[0], first_name[1]);
        }
        for (int i = 1; i < first_name.Length; i++)
        {
            temp += first_name[i] + ".";
        }
        temp = temp.Remove(temp.Length - 1, 1);
        return temp;
    }
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值