【摘自网络】每个注册用户都有自已的二级域名

以下是以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.cn的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.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,方便调用,也是二级域(用户区)的首页文件

         /// <summary>
        ///取得二级域主机头值,存入Session["UserDomainName"]中
        /// </summary>
        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 中的重写方法是:

<!--User区主机头URL重写,实现当abc.devin.cn访问站点时,经二级域站点,默认首文件为Index.aspx,将Index.aspx地址重写到/User/Index.aspx-->

   <RewriterRule>

    <LookFor>~/Index\.aspx</LookFor>

    <SendTo>~/User/Index.aspx</SendTo>

   </RewriterRule>

到这里已经实现二级域了,不管输入什么样的主机头(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重写规则:

<RewriterRule>

    <LookFor>~/test\.aspx</LookFor>

    <SendTo>~/User/test.aspx</SendTo>

   </RewriterRule>

然后,test.aspx自身通过获取Session["UserDomainName"]的值或通过URL或取,来显示二级域主机头名称。

当然,你也可以直接将二级域站点单独绑定到这个User用户目录,取得URL中的主机头(用户名),但这样可能失去了与主站数据通讯的方便性。

另:

ASP.NET MVC 实现二级域名

ASP.NET MVC 使用二级域名来注册Area区域

MVC利用Routing实现多域名绑定一个站点、二级域名以及二级域名注册Area

时间: 2024-08-04 08:10:16

【摘自网络】每个注册用户都有自已的二级域名的相关文章

如何免费注册使用虚拟主机和二级域名建站

相信还是有不少程序员不知道怎么把自己创建的网站发布到网络上去,其实这个并不复杂,只要你有域名和服务器,一切都那么简单. 域名和服务器到哪里去弄?当然是去域名和服务器提供商那里去申请了.大部分的域名和服务器都是收费的,当然也有免费的虚拟主机和二级域名.如果仅仅是个人学习研究或者建立自己的博客论坛,免费的二级域名和虚拟主机就OK了,没必要去购买域名和服务器的. 对于免费域名,一般只有二级域名,而且是国外的,国内很少.免费虚拟主机国内也有,本人用过的最好的一个是1个月的使用期限,到期之前要发帖给他们打

C#制作ActiveX控件及部署升级(摘自网络)

使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是用C++或VB语言开发,本文介绍另一种方式,在.NET Framework平台上,使用C#语言开发ActiveX控件. 虽然本文通篇都在讲如何使用C#语言开发ActiveX控件,但我并不极力推荐使用这种技术,因为该技术存在明显的局限,即需

电商网站如何引导和激励访问者成为注册用户

最近在研究如何快速增长网站的会员和订阅邮件用户,目前网站的会员和订阅用户增长缓慢,不能达到预期数值,所以最近在看国内外的一些同行们是如何优化这一块的,整体上的形式都是引导和激励访问者注册或订阅邮件,最终目标都是完成下单,产生销售额.什么基本的网站设计,注册按钮的位置,订阅邮件的位置,注册页是否好看,注册填写的信息繁简等等,这些都不在本文的讨论的范围,我只是简单把我所分析的觉得他们做得好的地方展示给大家,相信对你会有一丝帮助. Sheinside/Shecloth站内:从物流及折扣方面都给了新用户

武汉seo必须了解的网络推广方法基本上都在这里了

做网络事业那必定离不开推行来提高知名度,可是用什么办法或是途径可以见到实践性的作用.首先要想到不光可以长时间取得流量引进,并且还可以坚持杰出的曝光率才是问题的重中之重.其次挑选运用的网络推行办法应当契合利益不会构成经济负担,一起能成功的为网站翻开零流量约束构成打破这也需求合理的拟定相关计划.最终怎样运用多种不同的网络推行办法或是途径来进行长时间跟进计划的履行进展,根据所要传达宣扬的信息内容与受众集体不同来决议选用哪种办法完成有用推行.本文首要讲讲现在在网络中想得到更多人的重视,就可以经过以下多种

每个Linux用户都应该了解的命令行省时技巧

伯乐在线导读:有网友在问答网站Quora上提问:“有哪些省时小技巧,是每个Linux用户都应该知道的?” Joshua Levy 平常就在 Linux 平台工作,并且他积累了不少实用命令行技巧,他在回复中精选出一部分.对技术用户来说,这些技巧挺重要或实用,但知道的人并不多.下文略有点长,一般来 说,用户也不需要对全部内容都了解,但为了达到省时方便的目的,Joshua Levy  仍不遗余力做了校对,以保证列出的每一条都值得一读,前提是你是一位Linux重度用户. 为了获取文中提到的一个命令的更多

坚果云的成长烦恼:互联网巨头乌云笼罩(1年多时间, 坚果云已经拥有接近百万注册用户)

来源:新闻媒体 编辑:武陵门户网 更新时间:2013-05-18 特约记者 赵凤玲 上海报道 自从用上了坚果云,李俊(化名)再也没有专门为了某个文件而跑一趟公司.而李俊所在的五个人的市场团队再也不用频繁地相互转发最新的市场策划文本,只要有人在坚果云团队版中更新文档,就可以保证团队中所有人手上的文档总是最新的.这不仅减少了每个人邮件转发文本的麻烦,还可以确保每个人对外发送文本的一致,避免了错误地使用“过期”文本给客户带来的困扰. 从去年3月份上线至今,坚果云已经拥有接近百万注册用户,用户日活跃率达

每个 Linux 用户都应该知道的命令行技巧

每个 Linux 用户都应该知道的命令行技巧 原创 2015-09-11 伯乐在线 程序员的那些事 [伯乐在线导读]:有网友在问答网站Quora上提问:“有哪些省时小技巧,是每个Linux用户都应该知道的?” Joshua Levy 平常就在 Linux 平台工作,并且他积累了不少实用命令行技巧,他在回复中精选出一部分.对技术用户来说,这些技巧挺重要或实用,但知道的人并不多.下文略有点长,一般来说,用户也不需要对全部内容都了解,但为了达到省时方便的目的,Joshua Levy 仍不遗余力做了校对

【转载】有哪些省时小技巧,是每个Linux用户都应该知道的

前言:有网友在问答网站Quora上提问:“有哪些省时小技巧,是每个Linux用户都应该知道的?” Joshua Levy 平常就在 Linux 平台工作,并且他积累了不少实用命令行技巧,他在回复中精选出一部分.对技术用户来说,这些技巧挺重要或实用,但知道的人并不多.下文略有点长,一般来说,用户也不需要对全部内容都了解,但为了达到省时方便的目的,Joshua Levy 仍不遗余力做了校对,以保证列出的每一条都值得一读,前提是你是一位Linux重度用户. 为了获取文中提到的一个命令的更多信息,先试下

九成用户都在电视上玩游戏是种什么体验?

选择以游戏作为智能盒子乃至智能电视的突破点,国内厂商并非仅仅为了那看得见够不着的9成用户大蓝海.而是不搞游戏,智能盒子就是个卖硬件的. 本文为张书乐供IT时代网.IT时代周刊专稿,作者微信号:zsl13973399819 7月9日,红网记者做了一个<电视游戏,你玩过吗?>网络调查,截至7月9日16:00,共收到215个投票,仅1成网友表示偶尔会通过电视来玩游戏,PC和移动设备仍然是主流的游戏平台. 尽管样本量很小,但对于这个结果,笔者并不感到奇怪.撇开专业的视频游戏机不算,至少在安卓系统下的智