|
本人才疏学浅,实现方法可能不是太理想,有点曲折吧,现与大家分享一下 ^O^,希望对新手有所帮助,以下是以www.域名.com这个域名为例,让每个注册用户都有自已的二级域名,其中abc.域名.com就是要用到的二级域名
基本思路: 1. 域名支持泛解析,即是指:把A记录 *.域名.com 解析到服务器IP,服务器IIS中做绑定,绑定时主机头为空; 2. 为了实现完全的二级域,建两个站点,一个为主站用,一个为用户用,两个站点目录都指到一个同一网站目录 3. 在Web程序中或取URL来源中的二级域名主机头,比如:abc.域名.com 中的 abc; 4. 用获取来的二级域名名称,存入Session,方便取用 5. 用获取来的二级域名名称,用URL重写地址
实现方法: 域名A记录解析不用说了吧 ^_^,就是做一个*.域名.com的A记录解析到你服务器IP
方法一:二级域名URL转向 a. 建立站点,在IIS中绑定域名(win2003 - IIS6) 打开IIS,右击站点,然后属性,点击网站项IP地址的高级按钮,然后点编辑或添加来新增绑定,主机头值为空,如下图所示:

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

将此站点默认访问文档设为Index.aspx,。
做好后,不管用什么样的二级前缀都会访问到这个网站。
下面来获取URL地址进行分析,下面是过程代码,用来获取及判断主机头,代码放在默认文档的首文件Index.aspx.cs中
/// <summary> ///取得二级域主机头值,并实行转向 /// </summary> 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.域名.com/Error.aspx"); //跳转到出错页面 return; }
UserDomainName = UserHost[0].ToString(); //取得数组最前面一组值,及二级域名主机头
//进行特定判断,及是不要用到做为二级域名的主机头 if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "域名" || UserDomainName == null || UserDomainName.ToString()=="") { //你的动作 } else { HttpContext.Current.Response.Redirect("/User/"); //跳转到用户目录,即是二级域名所要去到的目录,当然你也可以跳传至*.aspx?UserID=xxx这样的链接 return;
|