用asp.net 2.0实现网站二级域名

原创 2006年05月29日 17:13:00

本人才疏学浅,实现方法可能不是太理想,有点曲折吧,现与大家分享一下 ^O^,希望对新手有所帮助,以下是以www.devin.cn这个域名为例,让每个注册用户都有自已二级域名,其中abc.devin.cn就是要用到二级域名

基本思路:
1. 域名支持泛解析,即是指:把A记录 *.devin.cn 解析到服务器IP,服务器IIS中做绑定,绑定时主机头为空;
2. 为了实现完全二级域,建两个站点,一个为主站用,一个为用户用,两个站点目录都指到一个同一网站目录
3. 在Web程序中或取URL来源中二级域名主机头,比如:abc.devin.cn 中 abc;
4. 用获取来二级域名名称,存入Session,方便取用
5. 用获取来二级域名名称,用URL重写地址

实现方法:
域名A记录解析不用说了吧 ^_^,就是做一个*.devin.cnA记录解析到你服务器IP

方法一:二级域名URL转向
a. 建立站点,在IIS中绑定域名(win2003 - IIS6)
打开IIS,右击站点,然后属性,点击网站项IP地址高级按钮,然后点编辑或添加来新增绑定,主机头值为空,如下图所示:


这里只要绑定一个就行了,绑定后如下图所示:

将此站点默认访问文档设为Index.aspx,。

做好后,不管用什么样二级前缀都会访问到这个网站

 

下面来获取URL地址进行分析,下面是过程代码,用来获取及判断主机头,代码放在默认文档首文件Index.aspx.cs中

///


///取得二级域主机头值,并实行转向
///
public void CheckDomain()
{
HostName = HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址
UserHost = HostName.Split(new Char[] { '.' }); //数组,以“.”分隔

//判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页
if (UserHost.Length > 3)
{
HttpContext.Current.Response.Redirect("http://www.devin.cn/Error.aspx");//跳转到出错页面
return;
}

UserDomainName = UserHost[0].ToString(); //取得数组最前面一组值,及二级域名主机头

//进行特定判断,及是不要用到做为二级域名主机头
if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "devin" || UserDomainName == null || UserDomainName.ToString()=="")
{
//你动作
}
else {
HttpContext.Current.Response.Redirect("/User/");//跳转到用户目录,即是二级域名所要去到目录,当然你也可以跳传至*.aspx?UserID=xxx这样链接
return;
}

}

到这里已经可以实现abc.devin.cn跳转到指定页面或链接了,但并不是真正二级域名,只是URL转向而已。


方法二:真正二级域名
a.建立站点
此时我们需要建立两个站点,一个主站点、一个二级域站点,二个站点文件目录为同一目录,其目录中有Default.aspx及Index.aspx两个文件。建立方法如下:
a). 主站点建立方法参照方法一中站点建立,不过,主机头非空,需设为www.devin.cn 与 devin.cn ,当然,你也可以设置其它不想用来做二级主机头。站点默认访问文档为:Default.aspx。
b). 二级域站点建立方法与方法一中站点建立一样,其默认访问文档为:Index.aspx。

b.现在我们要用到之前建立二级域站点,我们将用户数据放在根目录下User目录中。
下面是/User目录中默认文档(Index.aspx.cs)过程代码,主要用途是将二级域名主机头存入Session,方便调用,也是二级域(用户区)首页文件

///


///取得二级域主机头值,存入Session["UserDomainName"]中
///
public void UserDomainNameSession()
{
HostName = HttpContext.Current.Request.Url.Host.ToString();//获取URL主机地址
UserHost = HostName.Split(new Char[] { '.' });//数组,以“.”分隔

//判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页
if (UserHost.Length > 3)
{
HttpContext.Current.Response.Redirect("http://www.devin.cn//Error.aspx");//跳转到出错页面
return;
}

UserDomainName = UserHost[0].ToString();//取得数组最前面一组值,及二级域名主机头

//进行特定判断,及是不要用到做为二级域名主机头
if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "devin" || UserDomainName == null || UserDomainName.ToString()=="")
{
//你动作
}
else
{
HttpContext.Current.Session["UserDomainName"] = UserDomainName; //将二级域名主机头存入Session
}
}
//你对Session["UserDomainName"]处理,比如把这个Session["UserDomainName"]值是“abc”,那么你可以index.aspx?UserName=abc,如果不想使用Session,你可以在需要用到二级域主机头时,再来通过URL地址获取。

c.URL重写
我用是微软URLRewriter,使用方法参见:http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
web.config 中重写方法是:


~/Index/.aspx
~/User/Index.aspx

到这里已经实现二级域了,不管输入什么样主机头(www.devin.cn 与 devin.cn除外,因为这两个域已经绑定到主站点中,优先访问到了主站点),就可以实现 abc.devin.cn访问到这个用户目录了,而且浏览器地址栏,出现也是abc.devin.cn这样域名地址,为了保证此二级域访问其它页面也保持二级域名属性,也需同时做URL重写,在其它页面如需用到二级域主机头(用户名),从Session["UserDomainName"] 中取得即可,比如,要在User目录中文件 test.aspx ,显示二级域主机头名称,同时需保持浏览器地址栏地址为: abc.devin.cn/test.aspx ,那么在web.config中添加URL重写规则:

~/test/.aspx
~/User/test.aspx

然后,test.aspx自身通过获取Session["UserDomainName"]值或通过URL或取,来显示二级域主机头名称。
当然,你也可以直接将二级域站点单独绑定到这个User用户目录,取得URL中主机头(用户名),但这样可能失去了与主站数据通讯方便性

相关文章推荐

页面跳转与重定向(之二)

这一篇是接着上一篇的继续 页面跳转与重定向(之一) 在上一篇中, 介绍了在html,js 和JSP中如何跳转和重定向。 基本是在页面层级进行页面的跳转, 进入一个页面后跳入另一个页面。 这一篇...
  • oscar999
  • oscar999
  • 2014年05月29日 21:52
  • 11760

网站二级域名用asp.net 2.0的实现方案

 本人所了解有两种方案,可能还有其的方式,希望大家多多讨论!基本思路:1. 域名支持泛解析,即是指:把A记录 *.域名.com  解析到服务器IP,服务器IIS中做绑定,绑定时主机头为空;2. 为了实...
  • mengyao
  • mengyao
  • 2007年01月25日 19:52
  • 20483

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

网站二级域名用asp.net 2.0的实现方案

http://blog.csdn.net/mengyao/article/details/1493537 本人所了解有两种方案,可能还有其的方式,希望大家多多讨论! 基本思路: 1. 域名支...

Asp.net 用url重写(URLReWriter)实现任意二级域名

Asp.net 用url重写(URLReWriter)实现任意二级域名 我最近写了个小例子,大家可以先看这个,里面有小例子的完整代码下载. http://www.cnblogs.com/notus...
  • os2046
  • os2046
  • 2012年07月04日 10:54
  • 444

ASP.NET 使用URLRewriter重写二级域名

转载自: http://www.cnblogs.com/zhhh/archive/2011/03/18/1987985.htmlhttp://www.microsoft.com/china/msdn/...
  • wyqlxy
  • wyqlxy
  • 2011年03月18日 13:26
  • 736

asp.net/cookie/写cookie值/取cookie值/cookie跨二级域名

Cookie是一段文本信息,在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一。Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一...

用ASP实现二级域名

  • 2008年12月27日 12:09
  • 2KB
  • 下载

ASP实现二级域名

  • 2008年07月25日 17:21
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用asp.net 2.0实现网站二级域名
举报原因:
原因补充:

(最多只允许输入30个字)