码迷,mamicode.com
首页 > 其他好文 > 详细

二级域名的完美实现

时间:2016-07-22 18:43:46      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

1、什么是二级域名,大家恐怕都很清楚,举个例子,比如www.fenlei123.cn一般当作一级域名,或者主域名,那么http://beijing.fenlei123.cn和http://shanghai.fenlei123.cn就是二级域名了。

二级域名的优势
    实际上,对于搜索引擎来说,一般是把不同的二级域名当作不同的站点来看待的,也就是说在很大程度上可以把二级域名当作一个独立的站点来对待。所以,在搜索 引擎的排序权重里,对于二级域名给与很高的权重。更重要的一点是,大部分搜索引擎,特别是百度,基本会无条件收录二级域名。也就是说,你的二级域名虽然缺 少外链,他也可以给你收录,而对于普通的网页,收录起来就不那么痛快了。

二级域名的解析方法
    基本上所有的dns都支持泛域名解析,所以,我们只要把泛域名解析到一个ip上就可以了。不过,这样有个问题,就是一般情况下,一个服务器只允许一个空主 机头,如果你的服务器已经有别的域名占用了这个空主机头,就需要在你的这个网站的主机头里写上所有可能的二级域名。所以,我们推荐使用独立服务器来实现泛 二级域名。

二级域名的asp.net重定向实现
    对于网站程序来说,二级域名的实现基本上都是通过重定向来实现的,对于使用asp.net的系统,我们使用下面的方式来实现(asp和其他的语言也都非常类似):
在global.asax文件里,截获Application_BeginRequest事件,重写如下:
string url = Request.Url.AbsoluteUri;
        string strMatchDomain = @"[url=http://(w{3}\.)?([^\.]*)[\.]*fenlei123\.cn]http://(w{3}\.)?([^\.]*)[\.]*fenlei123\.cn[/url]";
        string newUrl = "";
        string strDomain = Split2Info(url, strMatchDomain);
            if (strDomain != null && strDomain != "")
            {
                if (url.ToLower().EndsWith(@"default.aspx"))
                {
                      if(strDomain != "all")
                      {
                         newUrl = string.Format("[url=file://\\ParterSite.aspx?code={0]\\ParterSite.aspx?code={0[/url]}", strDomain);
                         this.Context.RewritePath(newUrl);
                       }
           }

给大家解释一下这段代码:
    假如我们请求了这样一个地址:http://qingdao.fenlei123.cn,经过Split2Info()方法使用正则表达式处理后,会得到 fenlei123.cn前面的qingdao,也就是说,我们使用正则表达式得到了某个城市的名称.然后我们判断这个url是否是 default.aspx结尾的,因为所有的二级域名都是以default.aspx结尾的(针对这个网站),然后把这个url重定向也就是说这个就是最 终真正要执行的网页。
这样,我们通过泛解析和网页重形象就实现了泛二级域名,当然也可以通过别的方式实现,比如iis级别的dll重定向等。

2、二级域名的完美实现和实例

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com
其次,在 httpd.conf 中打开 mod_rewrite

之后,在 httpd.conf 的最后,添加以下内容:

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
然后,在这个所在路径的目录下创建一个文件: vhost.map
内容为:

www.domain.com /usr/local/www/data-dist/domain
bbs.domain.com /usr/local/www/data-dist/bbs
anyname.domain.com /usr/local/www/data-dist/anyname

以上部分都是:" 域名+空格+绝对路径" 的形式。

最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
domain , bbs , anyname 等等,理论上可以无限。

这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。

二级域名的完美实现

标签:

原文地址:http://www.cnblogs.com/zhoulonglong/p/5695889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!