关于二级域名的疑问

studydhtml 2003-12-19 11:32:31
我有一个网站http://www.XXX.xxx
允许任何人注册
比如我注册user的帐号
如何给他分配一个http://user.XXX.xxx的页面,而不是http://www.XXX.xxx?id=user
急!
谢谢
...全文
199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
studydhtml 2003-12-22
  • 打赏
  • 举报
回复
谢谢
aoenzh 2003-12-19
  • 打赏
  • 举报
回复
不容易啊
cfzx 2003-12-19
  • 打赏
  • 举报
回复
向域名商申请泛域名解释,然后自己写一个假的二级域名的转向代码,包含在首页。源代码网上很多,自己去下一个。
xuzuning 2003-12-19
  • 打赏
  • 举报
回复
apache?
做成http://www.XXX.xxx/~user 很容易
做成http://www.XXX.xxx/user 也很容易
做成http://user.XXX.xxx 就不很容易了,但是也可以的
diekiss 2003-12-19
  • 打赏
  • 举报
回复
向域名商申请二级域名解释
xuzuning 2003-12-19
  • 打赏
  • 举报
回复
贴两篇东西给你看看:
如何开发一个虚拟域名系统
  大家在使用诸如yourname.yeah.net这样的简记域名时都感到十分方便,有很多人在想:我要是能让自己的服务器也能够实现简记域名就好了。其实这并不复杂。看完了本文,你也可以做一个简记域名系统。
  简记域名系统的关键技术在于:实现Web页面的重定向(Redirctory)。在本质上,简记域名系统和虚拟机系统完全不同。虚拟机的虚拟域名和IP是存在一一对应关系的。而简记域名系统不需要将域名和IP做一一映射。也就是说,它根本不需要复杂的域名解析机制和虚拟机来完成,它所做的事情就是当你在请求yourname.somedomain时,将你的浏览器重新定向到你本来存放Html页面的地方。
  为了说明的更完善,下面图例:
  我提供的源程序是运行环境是:RedHat 5.1 Linux下的Apache1.3.6 Web服务器+PHP3语言。 在编写程序之前,我们首先要设置好我们的服务器。首先要让Apache服务器支持php3。到ftp.redhat.com下载mod_php-2.0.1-9.i386.rpm,安装后,修改/etc/httpd/conf/http.conf文件,去掉
  设置DNS服务器,使其能对泛域名解析。一般的Unix和Linux系统的DNS解析都是由Bind守护程序完成的,Bind4和Bind8的配置文件分别/etc/named.boot和name.conf,配置时根据你的系统修改。设置Bind的配置文件/etc/named.boot,在其中加入“primary domain.com db.domain”一句,添加一个新的域记录。在/etc/name.conf中加入:
  zone "domain.com" {
  type master;
  file "db.domain”;
  };
  在/var/name/中新建主域记录文件db.domain,其格式为:
  N SOA dns.domain.com root.domain.com (
  199811291 ;Serial
  28800 ;refresh
  7200 ;retry
  604800 ;expire
  86400) ;minimum
  dns
  MX 10 dns.domain.com.
  dns A 202.115.135.50
  www A 202.115.135.50
  * A 202.115.135.50
  关键是最后一句,即将整个域可能出现未做标记的所有Hostname全部指向同一IP。 执行/usr/sbin/ndc reload,重新加载域名数据库。测试一下,此时应该随便ping一个domain域内的主机(除已经标记的),都指向了指定的IP,那么DNS服务器设置完成。
  最后一步是编制PHP3脚本。我们刚才已经在图中详细的说明了整个的原理,所以写一个重新定向的程序就不是很难了。
  让我们来看一个由IE5.0送出的完整HTTP头信息:
  Accept: application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint,      image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
  Accept-Encoding: gzip, deflate
  Accept-Language: zh-cn
  Connection: Keep-Alive
  Host:ww.yahoo.com
  User-Agent: Mozilla/4.0 (compatible; MSIE 5.0b1; Windows 98)
  我们需要在整个HTTP头信息中取出Host信息,然后将http://www.jj.jx.cn/www.xxx.xxx/default.htm形式的第一部分“www”,即HostName(也即是用户注册的name)单独取出,作为重定向检索的关键字。
  检索到用户注册的URL信息后,我们给用户浏览器送一个重定向命令“Localtion: http://www.jj.jx.cn/somewhere/sample.html”,将用户重定向到指定页面。
  在PHP3中,有函数GetAllHeader(),取得浏览器送出的HTTP头信息。我们主要需要使用此函数来完成整个程序。
  后面附有源程序,由于只是实验性质的,所以在查询用户信息时,没有使用数据库,如果整个系统要实际应用的话,一定要和数据库挂接起来,不然查询用户信息的过程将是十分漫长,大大影响效率,而且用户数据的管理也不方便。(由于篇幅限制,没有给出注册和管理所需的写记录程序,请自行添加)
  在源程序中,所有用户信息记录在data子目录下user.dat文件中。其格式为:
  username:
  http://octopus.cdit.edu.cn/~qap213/index.html

  附PHP3源程序:
  <?
  //Get HTTP’s Header and parse it//
  $headers = getallheaders();
  while (list($header, $value) = each($headers)) {
  if($header=="Host"){$username= strtok($value,".");}}
  //Jump out the Banner's Window//
  echo '<script language="JavaScript">',
  'msg=window.open("banner.htm","sample",
   "toolbar=no","directories=no",directories=no","menubar=no");’,
  '</script>';

  // seek the user information from the recorded file//
  if(!$usrinfo=file("data/user.dat")){echo "Open Data File Error!!";}
  $url="http://";
  for($i=0;$i<count($usrinfo);$i++)
  if(strtok($usrinfo[$i],":")==$username){
  $url=$usrinfo[$i+1];
  }
  if($url=="http://"){echo "not found the uesrname of Data!";}
  else{
  echo '<meta http-equiv="refresh" content="0;','url=',$url,'">';}
  ?>

玩转虚拟域名◎+ .
出自:y10k y10k 2002年09月02日 22:07
不知道大家最近上网是否发现一个新现象,就是有一些网站开始提供“username@server”的虚拟域名服务。由于“@”的魅力, 大家纷纷申请,你或许会想:“如果我也能提供这种服务,该多 好阿:)人气肯定不错!”本文将给大家揭开“@”的“神秘” 面纱,让大家都可以来“@”!(Do u @ today?)

别急,这个并不是电子邮件的地址,是一种虚拟域名,不相信的 话可以在浏览器中访问“bbs@zphp.com”。部分朋友应该使用过 IE的FTP功能,就是在浏览器的地址栏中键入“ password:username@server”IE就会自动登陆FTP服务器;而在 Http1.1协议中,就规定了Http访问授权功能,形式同样为“ password:username@server”,其中“password:”可以省略, 也是是访问“bbs@zphp.com”实际上是以bbs的身份访问“ zphp.com”这个服务器。

那么我们只是需要将具体的URI传送给PHP程序,在数据库中搜索 出真实的URL重定向就可以了。

首先我们需要制作一个传送URI的页面(作为服务器的默认文档 ,一般命名为index.htm);在JS的Window对象中就可以实现这 项功能,下面是index.htm的源代码:
<script>
this.location = ‘gotourl.php?url=’ + this.location.href;
</script>
上面的代码会将浏览器重定向到gotourl.php,并且通过 QueryString给变量$url赋值为当前的URI。

成功将URI传递给PHP程序后,就可以进入数据库查找真实URL, 下面是SQL数据库相对应的table 的结构:
CREATE TABLE domain(
Id int(3) UNSIGNED DEFAULT ‘0’ NOT NULL, Domain char(20) NOT NULL, Gotourl char(255) NOT NULL, );
建立好了Table,就可以开始编写gotourl.php了,程序分为三个部分:

1、 分析URL:
$url = preg_replace(“/^http:\/\//I”, “”, $url); // 将URL前面的“http://”去掉,不区分大小写
$url = preg_replace(“/@.+$/”, “”, $url); // 将“@” 后面的部分去除
那么,剩下的URL就只含有“username”的部分了。
为了给数据库应用,需要对铭感的字符进行处理:
$url = addslashes($url);

2、 搜索真实的URL:
这里为了实现程序的通用性,使用了一个数据库的操作类(修改 自PHPLib)来操作SQL数据库:
$db = new dbSql(); // 连接数据库
$queryString = sprinf(“SELECT gotourl FROM domain WHERE domain=’%s’;”, $url); // 生成查询字符串
$gotourl = $db->result($queryString); // 查询取得结果

3、 重定向:
在PHP中重定向浏览器有多种方法,在这里使用比较简单的 HttpHeader来实现:
header(“location: $gotourl”);



其实像网易那样子的“username.yeah.net”的虚拟域名服务和 “@”的实现方法大同小异,但是“.”需要以价值200元的DNS泛 解析为代价,而“@”所需要的仅仅是:
1、 PHP/SQL数据库的权限;
2、 真正DNS解析的域名。

如果需要在虚拟域名服务中加入广告,比如网易的Popup窗口,可以将重定向部分改为:
<script>
window.open("url","nease","widt h=windth,height=height");
</script>

为了对得起“天地良心”,笔者没有将合并后完整的程序加上来(骗稿费?),如果大家比较懒,需要完整的代码(包括了添加等等),可以在http://zphp.com或者http://bbs@zphp.com 取得。希望大家都有一个好的访问量。

feel8 2003-12-19
  • 打赏
  • 举报
回复
商务的玉米有泛解析,注册过后,在域名控制面板中设置解a记录*指向ip为你的服务器ip
在apache的httpd。conf中设置析,这样完成解析后。
在你的网站根目录的index.php中判断,yourname.XXX.XXX中最前面的yourname是什么,然后查询数据库记录转向到相应的网址。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧