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

2024-03-19 14:48

本文主要是介绍用asp.net 2.0实现网站二级域名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本思路:
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地址的高级按钮,然后点编辑或添加来新增绑定,主机头值为空.

下面来获取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;
            }

        }


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


方法二:真正的二级域名
a.        建立站点
此时我们需要建立两个站点,一个主站点、一个二级域站点,二个站点的文件目录为同一目录,其目录中有Default.aspx及Index.aspx两个文件。建立方法如下:
a). 主站点建立方法参照方法一中的站点建立,不过,主机头非空,需设为www.域名.com  与 域名.com ,当然,你也可以设置其它不想用来做二级域的主机头。站点默认访问文档为: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.域名.com//Error.aspx");        //跳转到出错页面
                                return;
            }

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

                        //进行特定判断,及是不要用到做为二级域名的主机头
            if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "域名" || 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.......g.mspx?mfr=true
web.config 中的重写方法是:
                        <!--User区主机头URL重写,实现当abc.域名.com访问站点时,经二级域站点,默认首文件为Index.aspx,将Index.aspx地址重写到/User/Index.aspx-->


代码: [ 复制到剪贴板 ]
                        <RewriterRule>
                                <LookFor>~/Index/.aspx</LookFor>
                                <SendTo>~/User/Index.aspx</SendTo>
                        </RewriterRule>


到这里已经实现二级域了,不管输入什么样的主机头(www.域名.com 与 域名.com除外,因为这两个域已经绑定到主站点中,优先访问到了主站点),就可以实现 abc.域名.com访问到这个用户目录了,而且浏览器地址栏,出现的也是abc.域名.com这样的域名地址,为了保证此二级域访问其它页面也保持二级域名的属性,也需同时做URL重写,在其它页面如需用到二级域主机头(用户名),从Session["UserDomainName"] 中取得即可,比如,要在User目录中的文件 test.aspx ,显示二级域主机头名称,同时需保持浏览器地址栏地址为: abc.域名.com/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 2.0实现网站二级域名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/826338

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2