相信很多喜爱制作个人网站的朋友都使用过类如或者的免费三级域名,有很多人在想:我要是能让自己的服务器也能够实现域名转向就好了。其实这并不复杂。看完了本文,你也可以做一个域名转向系统。
域名转向系统的关键技术在于:实现web页面的重定向(Redirctory)。在本质上,域名转向系统和虚拟机系统完全不同。虚拟机的虚拟域名和IP是存在一一对应关系的。而域名转向系统不需要将域名和IP做一一映射。也就是说,它根本不需要复杂的域名解析机制和虚拟机来完成,它所做的事情就是当你在请求*.yourdomain时,将你的浏览器重新定向到你存放html页面的实际地址。
下面我们一步一步实现域名转向系统:
(假设你的域名是 主机地址是 196.0.0.1)。
首先我们要设置DNS把 *. 指向我们的主机地址 196.0.0.1。(如果你没有自己的DNS服务器你可以跳过这步分并与您的域名服务商联系请他们帮你把*.指向196.0.0.1)
win2000的DNS管理工具不允许把主机名称直接填写为*也就是说我们在win2000DNS管理工具里无法直接把*.指向同一个IP地址。但我们可以通过更改winnt/system32/dns/mydomain.dns这个文件来实现。此文件以文本格式保存,我们可以通过写字板将其打开。
我们需要在末尾处加入一条* A 196.0.0.1 的记录。
我们在WIN2000的DNS管理工具里更新服务器数据文件。你会发现域里多出了我们本来无法直接添加的主机“*”。(注意:几小时后您所做的DNS设置才会生效。)
为了这个域名转向系统可以运行在多平台下我们选择web服务器是否安装了php和mysql:
我们用index.htm读出浏览器送出的HTTP头信息送给dns.php,dns.php查询数据库得到转向地址并返回给客户端。
建立mysql数据库mydomain
CREATE TABLE dns (
mainchar(60),
linkchar(255)
)
main用来保存*.的*部分
link用来保存域名对应的转向地址。
建立index.htm:
this.location="dns.php?url="+this.location.href;
/47436.html域名转向系统的实现_php
有的朋友会问为什么不用php的GetAllHeader()函数取得浏览器送出的HTTP头信息。因为函数GetAllHeader()只支持Apache的web服务器,相信大多数win2000用户使用iis服务器。考虑到兼容性的问题我们选择使用读出浏览器送出的HTTP头信息。
建立dns.php文件:
$domain=""; //域名
$database="mydomain" //数据库
$datauser="root"; //数据库用户
$datapwd=""; //数据库密码
$dataserver="localhost"; //数据库服务器地址
?>
$db=mysql_pconnect($dataserver,$datauser,$datapwd);
?>
$url=str_replace("http://","",$url);
$url=strrev($url);
$url=strchr($url,strrev($domain));
$url=strrev($url);
$main=str_replace("."."$domain","",$url);
?>
$str="select link from dns where main='$main'";
$result=mysql_db_query($database,$str,$db);
list($link)=mysql_fetch_row($result);
?>
系统错误,或者这个域名还没有被注册!
程序部分完成。
最后要做的是配置web服务器这里我们以iis5.0为例
打开Internet信息服务的管理工具,新建一个站点*.(注意一定要把这个站点做为独立IP的默认站点)
把index.htm做为*.的默认文档。
至此域名转向系统实现了。你可以在数据库添加一条数据
Insert into dns values("etechnic","")
以后只要大家只要在浏览器输入就可以进入eNet技术频道了。
这里只向大家介绍域名转向的核心内容,你只要再编写一个简单的注册部分就可以提供像的免费域名转向服务了。或者可以电子邮件zjzf_1@向我免费索取asp cgi php各版本的完整域名转向服务程序。
程序部分在iis5.0+php4.0+mysql和linux+mysql+Apache测试通过。不足之处希望高手赐教。