.NET实现二级域名的方法
3/11/2013 9:15:40 PM
现在的博客用户注册完成后自动赠送他二级域名的功能。
经过资料分析,实现过程基本如下:
--------------------------------------------------------------------------------
总体思想设计图示:
注意,要保证你的域名泛解析,并且在主机上绑定主域名,如:绑定我的域名为cn-web.com。
原理很简单,用泛解析后,test000.cn-web.com(或者其它的子域名)都指向了我的主机ip,然后在主机默认处理页面里分析地址进行转向。(如我是在default.aspx页面里处理的)
代码实现:
我这里用的是.net2.0(c#)。
getUrl = Request.Url.AbsoluteUri.ToLower(); //获取URL(包含后面的网页)
//判断URL是否为空
if(getUrl != "")
{
string at = getUrl.Replace("http://", ""); //将URL中的"http://"去掉 www.cn-web.com/index.aspx
userUrl = at;//www.cn-web.com/index.aspx
userUrl = userUrl.Replace("www.", ""); //将URL中的"www."去掉 cn-web.com/index.aspx
userUrl = userUrl.Split('.')[0]; //取字符串第一个点之前的部分 cn-web
uurl = at.Split('/')[0];//读取站点信息,www.cn-web.com
string mosite = GetWebConfig.getDomain.Replace("http://*.","").Replace("/","");//cn-web.com,//这里是从我的配置文件里获取信息(下面会提到部分配置文件代码)
if(at.IndexOf(GetWebConfig.SiteIP)!=-1)//这里是从我的配置文件里获取信息(下面会提到部分配置文件代码)
{
this.Response.Redirect("user/in.aspx");//如果是IP信息,直接用ip登陆
}
else//用的是域名登陆
{
if(at.IndexOf("www.")!=-1 || at.IndexOf(mosite)==-1)//处理一级域名
{
//处理用户站点信息
if(new BLL.ALD_MSite().Exists(uurl))
{
//这里代码省去,根据你的实际情况由域名信息获取用户信息进行转向
}
else
{
//一级域名不存在的处理!
}
}
}
web.config页面:
<add key="Site" value="http://*.cn-web.com/" />
<add key="SiteIP" value="212.12.23.2" />
以上代码只是截取了核心实现代码,已经能全面说明问题了。