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

news/2024/5/14 0:41:38/文章来源:https://blog.csdn.net/weixin_30455067/article/details/98014992
本人所了解有两种方案,可能还有其的方式,希望大家多多讨论!
基本思路:
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中

代码:
ExpandedBlockStart.gifContractedBlock.gif/**//// <summary> 
InBlock.gif
///取得二级域主机头值,并实行转向 
ExpandedBlockEnd.gif
/// </summary> 

None.gifpublic void CheckDomain() 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gif
InBlock.gifHostName 
= HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址 
ExpandedSubBlockStart.gifContractedSubBlock.gif
UserHost = HostName.Split(new Char[] dot.gif'.' }); //数组,以“.”分隔
InBlock.gif  
//判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页 
InBlock.gif
if (UserHost.Length > 3
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gif 
InBlock.gifHttpContext.Current.Response.Redirect(
"http://www.域名.com/Error.aspx"); //跳转到出错页面 
InBlock.gif
return
ExpandedSubBlockEnd.gif}
 
InBlock.gif
InBlock.gifUserDomainName 
= UserHost[0].ToString(); //取得数组最前面一组值,及二级域名主机头 
InBlock.gif
InBlock.gif
//进行特定判断,及是不要用到做为二级域名的主机头 
InBlock.gif
if (UserDomainName.ToLower() == "www"    UserDomainName.ToLower() == "域名"    UserDomainName == null    UserDomainName.ToString()==""
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gif
//你的动作 
ExpandedSubBlockEnd.gif
}
 
ExpandedSubBlockStart.gifContractedSubBlock.gif
else dot.gif
InBlock.gifHttpContext.Current.Response.Redirect(
"/User/"); //跳转到用户目录,即是二级域名所要去到的目录,当然你也可以跳传至*.aspx?UserID=xxx这样的链接 
InBlock.gif
return
ExpandedSubBlockEnd.gif}
 
InBlock.gif
ExpandedBlockEnd.gif}

None.gif

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

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

b). 二级域站点建立方法与方法一中的站点建立一样,其默认访问文档为:Index.aspx。

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

代码:
ExpandedBlockStart.gifContractedBlock.gif/**//// <summary> 
InBlock.gif
///取得二级域主机头值,存入Session["UserDomainName"]中 
ExpandedBlockEnd.gif
/// </summary> 

None.gifpublic void UserDomainNameSession() 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifHostName 
= HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址 
ExpandedSubBlockStart.gifContractedSubBlock.gif
UserHost = HostName.Split(new Char[] dot.gif'.' }); //数组,以“.”分隔
InBlock.gif  
//判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页 
InBlock.gif
if (UserHost.Length > 3
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gif 
InBlock.gifHttpContext.Current.Response.Redirect(
"http://www.域名.com//Error.aspx"); //跳转到出错页面 
InBlock.gif
return
ExpandedSubBlockEnd.gif}
 
InBlock.gif
InBlock.gifUserDomainName 
= UserHost[0].ToString(); //取得数组最前面一组值,及二级域名主机头 
InBlock.gif
InBlock.gif
//进行特定判断,及是不要用到做为二级域名的主机头 
InBlock.gif
if (UserDomainName.ToLower() == "www"    UserDomainName.ToLower() == "域名"    UserDomainName == null    UserDomainName.ToString()==""
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gif
//你的动作 
ExpandedSubBlockEnd.gif
}
 
InBlock.gif
else 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifHttpContext.Current.Session[
"UserDomainName"= UserDomainName; //将二级域名主机头存入Session 
ExpandedSubBlockEnd.gif
}
 
ExpandedBlockEnd.gif}
 
None.gif
None.gif
//你对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 中的重写方法是:


代码:
None.gif<RewriterRule> 
None.gif<LookFor>~/Index\.aspx</LookFor> 
None.gif<SendTo>~/User/Index.aspx</SendTo> 
None.gif</RewriterRule>

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


代码:
None.gif<RewriterRule> 
None.gif<LookFor>~/test\.aspx</LookFor> 
None.gif<SendTo>~/User/test.aspx</SendTo> 
None.gif</RewriterRule>

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

  本文转自:http://www.qqread.com/aspdotnet/x295800.html

转载于:https://www.cnblogs.com/jailu/archive/2007/02/02/637918.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_766091.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站日志实时分析之Flink处理实时热门和PVUV统计

点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!暴走大数据点击右侧关注,暴走大数据!实时热门统计操作步骤:先从Kafka读取消费数据使用…

nodejs爬虫-通过抓取搜狗微信网站获取微信文章信息

展示地址 : http://39.108.162.233/wxlist github地址 : https://github.com/zzwwjjdj319/wechat_crawler 一 总量统计 二 按日期搜索 三 文章列表 四 微信文章链接

将ASP.NET网站部署到服务器IIS上

ASP.NET编写的网站程序,在网站编写完成所有流程都测试通过后,需要将网站发布到IIS的Web服务器上,此文将介绍发布的流程以及IIS相关设置过程,帮助读者了解网站发布的流程。 一、首先在Visual Studio中选择网站项目,然后…

WEB服务器之一:创建一个网站

一、实验准备网站的名字为:www.itat.com这里我们要用两台虚拟机:1、 Nanjing(DNS服务器、WEB服务器) IP:192.168.11.732、 shanghai(做测试)IP:192.168.11.72 DNS:192.1…

Asp.net MVC 2 网站轻松实现多语言支持

本文短地址:http://zdd.me/aspnetmultilingual 现在的网站大多数都支持多语言,为不同语言的用户访问网站提供方便。我在前几天用asp.net mvc 2 做了一个网站同时提供了中文和英文的支持,在这里将我的网站的多语言的实现方式与各位网友分享一下…

怪异而美丽的网站

怪异而美丽的网站 记录跳闸 记录跳闸是一个漂亮的贝尔兄弟的实验品。 邀请您来解决刮伤用鼠标的滚动轮记录的一系列难题。 聪明的游戏和一个可爱的界面,使这个有趣的在线Flash游戏,因为它是怪异。 声汉堡 这里是最有创造力的和非常规的闪光,我…

Windows安装node环境,部署静态网站

1、进入官网,下载nodejs https://nodejs.org/zh-cn/ 2、安装nodejs win10怎么安装nodejs和npm https://jingyan.baidu.com/article/d169e1860e6d8c436611d89a.html 3、查看版本信息 C:\Users\admin>node -v v12.2.0 4、部署静态网页 在当前页面打开命令行&#x…

创建自定义主机头的网站集

当我们在一个SharePoint Web应用程序中创建新网站集时,虽然我们可以指定网站集的路径,但是网站集的主机头,似乎必须使用Web应用程序所定义的主机头。比如,当在“http://sp2010”这个Web应用程序中创建一个新网站集时,网…

使用django建站系列之登录页面(一)

先秀一下我的登录页: 废话没有,直接上操作步骤。 1)建立工程 #django-admin.py startproject MyWeb 2)建立应用 #cd MyWeb/ #django-admin.py startapp app51cto 3)修改settings.py添加app vim MyWeb/settings.py INSTALLED_APPS ( django.c…

WordPress网站制作静态化插件:Cos-Html-Cache介绍

现在很多做网站的新手朋友、甚至网站建设公司都会采用现成的网站管理系统来建站,国内的PageAdmin、Discuz、Ecshop等网站管理系统都已经很成熟,大量的被用于网站建设中,之前小熊优化的小编分别介绍了这些网站管理系统,并且几乎都默…

网站经验谈:网站被降权怎么办 如何恢复权重

虽然百度一再强调百度本身并没有权重一说,但是对于各位站长朋友来说,权重还是衡量一个网站的重要指标之一。一个网站的权重高,代表流量高,收录好,关键词排名也相对较好。那么,这么重要的指标,一…

如何判断一个网站是否被墙

http://www.cnblogs.com/wangkangluo1/archive/2012/04/15/2447921.html 大家都知道GFW 平日作恶多端,一旦有网站不能访问,很多人都把矛头直指它了…. 虽然一般都是它干的,但实际上也不排除一些人别有用心…. 那么下面就来简单判断一下吧… 方…

学用MVC4做网站五:5.2我的文章

文章管理这一块,按照左侧导航这一块向下写 到了“我的文章”这一块。 先还是打开【ArticleController】,添加public ActionResult UserOwn(int id 0, int page 1) 这里的id是指栏目id,可以显示自己发布的指定栏目的文章,默认为0…

企业网站优化切忌心浮气躁

为什么80%的码农都做不了架构师?>>> 互联网时代,大部分的企业都有自己的网站,随着网站管理员的更新换代,企业网站的优化成了遗留问题。很多企业网站域名年龄都有几年以上了,但是从seo的角度来说还是那么烂…

网站用户分析知识总结

本文是《数据蛙三个月强化课》的第七篇总结教程,如果想要了解数据蛙社群,可以阅读给DataFrog社群同学的学习建议。温馨提示:如果您已经熟悉网站用户分析知识,大可不必再看这篇文章,或是只挑选部分文章 一:用户分析概…

浙大海洋法律与治理研究中心网站

近日,为浙江大学海洋法律与治理研究中心开发官方网站正式上线。2012年8月21日,浙江大学海洋法律与治理研究中心成立。中心将汇聚浙江大学跨学科优势资源,适应国家战略需求和促进海洋法制保障,致力打造一支国内顶尖、结构合理的海洋…

curl网站开发指南

转载 http://www.ruanyifeng.com/blog/2011/09/curl.html 我一向以为,curl只是一个编程用的函数库。最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。curl网站开发指南阮一峰 整理curl是一种命令行…

ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据。 目录: ASP.NET MVC5 网站开发实践 …

ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上。 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数…

网站创建自定义百度地图

第一步:百度搜索“创建地图-百度地图生成器”或者直接点击链接:http://api.map.baidu.com/lbsapi/creatmap/,打开页面 如下图所示: 第二步:输入你要查找的地址名称,点击查找,如下图所示&#xf…