二级域名一般情况下不需要,但在某些情况下,比如模拟网站群,比如作为一项附加功能给用户,让用户有独立家园的感觉……这些时候,可能有一定的商业价值。


要给“我记录网站综合系统”开启网站配置功能,请看下面的教程。


第一部分:效果预览

--------------------------------------

本来你的个人空间的网址是 www.wojilu.com/zhangsan.aspx ,现在是 zhangsan.wojilu.com

本来你的博客链接是 www.wojilu.com/space/lisi/Blog1/Post/3.aspx ,现在是 lisi.wojilu.com/Blog1/Post/3.aspx

……

依次类推。 

 

 

第二部分:准备工作

------------------------------------------

 

第一步:配置IIS以支持泛域名映射

 

你需要打开IIS,检查其中的默认网站是否正确设置——

1)端口必须是80

2)主机头必须是留空,如下图所示。

 


通过这一步,这就意味着IIS打开了泛域名映射,任何通过***.abc.com 这种非特定的域名或二级域名来访的时候,都会映射到此网站。

 

3)因为IIS只支持一个泛域名映射,所以请关闭IIS中其他所有网站。

非常可惜,本来你的IIS可以放多个网站的,现在你只能放一个。没有办法,IIS本身如此。
如果你的网站不使用域名,而是直接使用ip+端口访问,那倒是可以,不用关闭。

 

第二步:配置DNS,将所有二级域名指向你的ip地址

 

请访问域名服务商给你的域名DNS配置网址,在A记录中,

增加一条 *.abc.com 指向到你的ip(其中abc请换成你的域名)

 

 

 

第三部分:让wojilu支持二级域名

-------------------------------------------------

 

第一步,请登录你的网站,然后注销

如果没有注销,因为下面的步骤会更改cookie配置,从而导致你无法正常使用,无法注销也无法登录。

当然,如果已经是未登录状态,那自然最好。

 

第二步,请打开网站根目录的 web.config 文件,在forms这一块中增加你网站的域名

<forms name="wojiluASPXAUTH" />

增加为

<forms name="wojiluASPXAUTH" domain=".mytest.com"loginUrl="/Main/Login.aspx" />

另外,如果你的网站没有设置后缀名,那么 Main/Login.aspx 也相应去掉后缀名

 

这一步的作用是:让所有二级域名和主站共享cookie状态,避免无法正常登录的问题。

 

第三步,打开/framework/config/mvc.config 文件,增加两行配置

 

// 是否启用域名映射

isDomainMap : true

 

// 二级域名通配符对应的 owner类型

subdomainWildcardType : wojilu.Members.Users.Domain.User

 

其中的通配符映射的意思是——

 

如果 subdomainWildcardType 是用户类型(wojilu.Members.Users.Domain.User),那么

zhangsan.abc.com 这种二级域名都会映射到 ww w.abc.com/space/zhangsan.aspx

 

如果 subdomainWildcardType 是群组类型(wojilu.Members.Groups.Domain.Group),那么

zhangsan.abc.com 这种二级域名都会映射到 ww w.abc.com/group/zhangsan.aspx

 

目前“我记录网站综合系统”支持两种类型的“会员类型”(IMember),所以只能填写两个值之一,或者是wojilu.Members.Users.Domain.User ,或者是wojilu.Members.Groups.Domain.Group
当然,如果你将来扩展了
IMember类型,则此处还可以填写其他数据。

 

第四步,重启网站,访问网站首页,即可看到二级域名效果。

 

【常见问题】

1)一定要关闭页面缓存,否则不经过路由解析。当然这个限制会尝试解决TODO

2)为了让用户cookie失效,也可以修改web.configcookie名称

3为了二级域名方便使用,网址配置成必须有后缀名.aspx换句话说,如果开启二级域名功能,需要网站建立之初就开启,如果在使用一段时间之后再开启,有些链接就成了死链。

4)在二级域名下无法请求主域名网址的js,因为js不能跨域,在开发过程中必须注意这方面的问题。


【补充说明】

关于二级域名,虽然开发完成之后进行过一段时间的公开上线测试,但并不能保证100%没有bug;而且wojilu网站本身也没有用这个功能,所以在使用之前,站长最好确信自己有时间进行二次开发或修正。

也就是说,这个功能只是提供了一种方案的基础可能性,只针对有二次开发能力的用户,一般用户就不要折腾了。

另外,google, facebook, twitter等,基本上很少使用二级域名,用户的网址都是 facebook.com/username 这种,二级域名并不是很有必要的,使用这个功能之前请三思。