自动创建二级域名
第一步:把域名设置成泛解析.
就是把*.域名 解析到你的主机,是否支持泛解析,请查看你的域名商说明.
第二步: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;
}
}
就是把*.域名 解析到你的主机,是否支持泛解析,请查看你的域名商说明.
第二步: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;
}
}