自动创建二级域名 - 老枪

时间:2024-02-16 17:35:39

自动创建二级域名

第一步:把域名设置成泛解析.    
    就是把*.域名   解析到你的主机,是否支持泛解析,请查看你的域名商说明.  
  第二步:IIS设成的时候不要绑定域名.注意一台服务器里只能有一个站点不绑定域名  
  就是*.域名的默认访问页.  
  第三步:默认页里加入以下代码:关键部分如下:  
  string   sURL=context.Request.ServerVariables["HTTP_HOST"].ToLower();  
    sURL就是获取的域名部分   .  
      xxx.域名  
      对应的xxx就是用户名.然后查库里的记录,如xxx对应的是www.csd.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;  
                       
         
  }  
  }