Toggle navigation
网站首页
关于我们
推广运营
网站优化
公众号运营
电商运营
运营推广
案例展示
产品展示
服务范围
建站技术
前端设计
asp.net
数据库
小程序
linux
php
电脑操作
联系我们
asp.net
主页
>
asp.net
>
网站二级域名用.net 2.0实现方案
网站二级域名用.net 2.0实现方案
2013-12-29
本人所了解有两种方案,可能还有其的方式,希望大家多多讨论!
基本思路:
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 中的重写方法是:
代码:
<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中的主机头(用户名),但这样可能失去了与主站数据通讯的方便性。
本文转自:
http://www.qqread.com/aspdotnet/x295800.html
新闻资讯
网站优化
公众号运营
电商运营
前端设计
asp.net
数据库
小程序
linux
运营推广
php
电脑操作
最新资讯
IEnumerable和ICollectio…
VMware虚拟机安装Windows…
在VMware中安装CentOS7(…
PO VO BO DTO DAO 和 POJ…
ICollection和ICollectio…
最新案例
境外旅游私人订制网站
旅游
网络品牌建站公司网站
通用网络科技公司
关于我们
公司概况
企业文化
联系我们
新闻资讯
网站优化seo
电商运营
公众号运营
客户案例
石家庄网站建设
石家庄网站制作
石家庄网站设计
网页设计
石家庄网络公司
小程序开发
产品展示
商城系统
点餐系统
报价系统
关注公众号
小程序