泛域名解析概述
大家都听过“泛珠三角”吧?泛珠三角的意思就是不仅仅是珠三角,包括珠三角周边,或者说以珠三角为核心,辐射周边地区。同理,泛域名解析的概念也差不多。所谓的泛域名解析,就是将该域名的所有次级域名都解析到某一个IP上面。同时,该IP所属的服务器也对该域名的泛解析进行处理。因此,要实现泛域名解析(狭义的),必须同时满足两个条件,一是域名所在的服务商的DNS必须支持泛解析,二是泛域名解析的服务器必须支持域名的泛解析,这两个条件缺一不可,否则泛解析将无意义。
目前支持泛解析的域名商:Name.com、Godaddy、新网互联等……
目前支持泛域名的空间:狭义上,所有带cPanel的空间都支持。广义上,所有主机都支持。
泛域名解析的用途
接下来我要介绍的泛域名解析的用途比较肤浅,因为本文是为cPanel空间用户所写,所述之内容实际上是泛域名解析的一个初级的应用。
那么,泛域名解析到底有什么用?
我们知道,当我们希望在空间上绑定一个子域名的时候,我们首先要得到服务器的IP地址,然后在服务器和域名注册商的DNS上设置一个主机头。例如我要建一个论坛,并且希望我的访客用forum.zhaiweb.com来访问这个论坛,而不是zhaiweb.com/forum来访问的时候,我就必须在cPanel和域名的DNS上面添加一个名为forum的主机头,然后指向我服务器的IP。但当我们使用泛域名解析之后,由于DNS默认把该域名的所有次级域名都指向了我的服务器IP,此时我只需要设置我的cPanel,添加一个基于该域名的主机头(子域名/次级域名)即可。
设置泛域名解析
1.域名DNS设置(以Name.com)为例
实际上非常简单,我们只需要登录到Name.com,进入域名的DNS管理页面,以通配符“*”(去掉双引号之后的半角星号)为主机头,将这个主机头指向cPanel服务器的IP即可!如图:

上图中,1.2.3.4就是服务器IP。
2.服务器上的设置
广义的泛域名解析实际上仅仅要求域名DNS支持即可,因此当你的域名DNS支持泛解析,而且你已经进行了泛解析的设置后,并不需要在服务器上做任何设置。此时,你域名的任意一个次级域名都会指向同一个IP,当你需要用次级域名建立网站的时候,只需要在cPanel里头添加相应的主机头,即可。
然而,泛域名解析的意义并不止于简化我们增加此域名解析的操作。利用泛域名解析,结合htaccess,我们可以绕过cPanel主机的次域名绑定数量的限制,实现超额的添加子域名。比方说当使用cPanel空间的时候,空间只支持80个子域名的绑定,也就是当你希望建立子网站,或者使用子域名进行url转发的时候,你最多只能添加80个记录。如图:

子域名数量是服务商通过cPanel进行限制的,但是我们只需要在cPanel上对一个域名进行泛解析,再通过编辑htaccess,就可以实现无限制的绑定或者转发。我们只需要进入cPanel,找到

进入,然后添加一个通配符“*”,如下图(以zedlau.com为例)

保存当前设置。然后访问该域名的所有次级域名时,都等于访问/public_html/zedlau/sub这个目录。
此时,如果我们需要增加一个域名转发,可以编辑sub这个目录下面的.htaccess,然后根据需要加入转发代码,例如:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mail.zedlau.com [NC]
RewriteRule ^(.*)$ http://mail.google.com/a/zedlau.com/$1 [L,R=301]
以上代码使得访客访问mail.zedlau.com时,可以跳转到http://mail.google.com/a/zedlau.com/
当然,泛域名的用处并不止于url转发,通过htaccess,我们还可以绑定域名。注意,这是真正意义上的绑定。这也是通过泛域名结合htaccess超越cPanel限制的一个重要用途。
刚才我把zedlau.com泛解析了,也在cPanel里面做了设置,将所有zedlau.com的次级域名都解析到服务器的/public_html/zedlau.com/sub/目录中。此时我要建立一个bbs.zedlau.com,我既可以在cPanel里面设置,也可以通过htaccess实现。首先,在/public_html/zedlau.com/sub/下建立一个名为bbs的目录,然后编辑/public_html/zedlau.com/sub/的.htaccess文件加入以下代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(bbs.)?zedlau.com$
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /bbs/$1
RewriteCond %{HTTP_HOST} ^(bbs.)?zedlau.com$
RewriteRule ^(/)?$ bbs/index.html [L]
备注:最后一句中的index.html可以是任何服务器支持的后缀,例如php,jsp,htm,html等等,但这个文件必须真实的存在。例如这个目录要装dz的话,那么就必须把index.html换成index.php
后话
本文写得比较仓促,思维显得有点混乱,有待进一步修正和扩展~以后再说吧!
近期评论