域名转向的原理:
当我们经过代理商从国际域名机构注册一个国际域名以后,通常都是有拥有DNS主机的代理商作第一级的域名DNS设置,这时候DNS服务商为你解析了一个www.youname.com的域名。
而实际上一个国际域名是可以设置多个二级域名的,例如:abc.youname.com;a.youname.com
但是当我们要增加2级域名时,必须经过代理商作DNS的设置,很多代理商对这项服务都需要收费,即使免费也只能设置小数的几个。而通过CGI转向的办法,可以为你设置无数个二级域名而无需要通过DNS服务商,同时还支持非IP地址的转向,例如把:abc.youname.com
转向: http://my.youname.com/~youname/index.htm
CGI程序的转向原理:
现以本站的域名转向程序作讲解。
使用该程序首先要求DNS代理商在设置你的国际域名时采用支持多级域名的解释,也就是当你调用*.youname.com时与调用http://www.youname.com时的效果一样。(本站域名注册提供该项服务支持)。
当用http://*.youname.com访问网站时,首先打开index.htm文件,这时候index.htm通过javascript调用一个CGI脚本并把地址栏信息传递到CGI脚本中,CGI脚本通过传递过来的信息解析出需要转向的网址,并自动跳转到该网页,从而完成整过二级域名的专向过程。
代码的评析:
程序中共有3个文件index.htm,domain.cgi,urlfile.txt
index.htm ——转向的根文件,采用框架屏蔽地址栏.
该文件采用框架直接调用主文件domain.cgi,请把该文件放在主域名的web根路径
urlfile.txt ——转向的数据记录文件:
www|http://www.chinalb.com|
bbs|http://club.chinalb.com|
chat|http://wwwbug.ciscn.com/netbugchat|
纪录的格式为:
二级域名的前缀|转向的URL路径|
domain.cgi—转向的主程序文件
#!/usr/bin/perl
$|=1;
$errorpagefile="error.htm"; # 域名错误时返回的页面
$filename="/home/lb51j/html/urlfile.txt"; # 纪录文档的物理路径
$homepage= "http://www.chinalb.com"; # 主页的真实URL
$url = $ENV{'HTTP_REFERER'}; # 调用脚本的URL二级域名
$url=~s/Http:////g; # 把域名URL中的'http://'过滤掉
$url=~s/HTtp:////g;
$url=~s/HTTp:////g;
$url=~s/HTTP:////g;
$url=~s/http:////g;
$url=~s/hTTP:////g;
$url=~s/htTP:////g;
$url=~s/httP:////g;
$url=~s/hTtP:////g;
$url=~s/HtTp:////g;
$url=~s/HttP:////g;
$url=~s/hTTp:////g;
$url=~s/HTtP:////g;
$url=~s/htTp:////g;
$url=~s/HtTP:////g;
$url=~s/hTtp:////g;
@name1=split(/./,$url); # 求出二级域名的前缀
$name2=$name1[0];
$name2=~tr/A-Z/a-z/;
open (FILE,"$filename"); # 打开数据记录文件urlfile.txt
@line=;
close (FILE);
foreach (@line){ # 求出对应域名前缀的转向URL
@line1=split(/|/,$_);
if ($line1[0] eq $name2){
$urllink=$line1[1];
}
}
if(!($urllink)){
print "Location: $homepagenn"; # 对于没有定义的域名前缀转向默认的页面
exit 0;
}
print "Location: $urllinknn"; # 跳转到用户的页面
exit 0;
支持多级域名的DNS设置方法:
1。首先设置该域名的DNS数据文件,添加一个A纪录
* IN A 你的服务器IP
2。配置web服务器(以Apache为例)
在httpd.conf文件中修改虚拟主机设置:
...............
...............
ServerName you.com
ServerAlias *.you.com
..............
——————————