域名转向系统的关键技术在于:实现web页面的重定向(redirctory)。在本质上,域名转向系统和虚拟机系统完全不同。虚拟机的虚拟域名和ip是存在一一对应关系的。而域名转向系统不需要将域名和ip做一一映射。也就是说,它根本不需要复杂的域名解析机制和虚拟机来完成,它所做的事情就是当你在请求*.yourdomain时,将你的浏览器重新定向到你存放html页面的实际地址。下面我们一步一步实现域名转向系统: (假设你的域名是www.mydomain.com 主机地址是 196.0.0.1)。首先我们要设置dns把 *.mydomain.com 指向我们的主机地址 196.0.0.1。(如果你没有自己的dns服务器你可以跳过这步分并与您的域名服务商联系请他们帮你把*.mydomain.com指向196.0.0.1) win2000的dns管理工具不允许把主机名称直接填写为*也就是说我们在win2000dns管理工具里无法直接把*.mydomain.com指向同一个ip地址。但我们可以通过更改winntsystem32dnsmydomain.dns这个文件来实现。此文件以文本格式保存,我们可以通过写字板将其打开。我们需要在末尾处加入一条 * a 196.0.0.1 的记录。我们在win2000的dns管理工具里更新服务器数据文件。你会发现mydomain.com域里多出了我们本来无法直接添加的主机“*”。(注意:几小时后您所做的dns设置才会生效。) 为了这个域名转向系统可以运行在多平台下我们选择php+mysql制作程序部分,请检查你的web服务器是否安装了php和mysql: 我们用index.htm读出浏览器送出的http头信息送给dns.php,dns.php查询数据库得到转向地址并返回给客户端。建立mysql数据库mydomain create table dns ( main char(60), link char(255) ) main用来保存*.mydomain.com的*部分 link用来保存域名对应的转向地址。建立index.htm:《script》 this.location =”dns.php?url=”+this.location.href; 《script》有的朋友会问为什么不用php的getallheader()函数取得浏览器送出的http头信息。因为函数getallheader()只支持apache的web服务器,相信大多数win2000用户使用iis服务器。考虑到兼容性的问题我们选择使用javascript读出浏览器送出的http头信息。建立dns.php文件: