请教怎么才能动态的分配二级域名

bubududu 2004-06-13 07:06:21
自助建站系统,apache+php,有人注册了一个名称testa,就自动给他分配一个二级域名,testa.xxx.com,这个怎么弄呢?
...全文
773 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
bubududu 2004-07-01
  • 打赏
  • 举报
回复
免费的吗?呵呵,看看去
mikespook 2004-06-30
  • 打赏
  • 举报
回复
呵呵~~~~其实说了半天还是重定向,而不是真正的二级域名啊~~~

不知道你们有没有用过MYDNS这个DNS服务器,和MYSQL整合~~~~你看看它带的PHP管理面版就明白了~~~其实只要用MYDNS,甚至动态域名服务都可以做到~~~~
Kandy 2004-06-30
  • 打赏
  • 举报
回复
汗,不知道什么时候COM的根域都被你霸占了……
Kandy 2004-06-30
  • 打赏
  • 举报
回复
倒,麻烦楼上不要这样“强大”,会误导很多人的!
bubududu 2004-06-30
  • 打赏
  • 举报
回复
to Kandy(济沧海)
RewriteCond ${lowercase:%{HTTP_HOST}} !^www\.y\.com(\.*)$就可以了,呵呵
这个很简单,rewrite的正则还是很强大的
bubududu 2004-06-30
  • 打赏
  • 举报
回复
to:clansoft(无神论者)
我就是说采用这种办法,这种办法只是造假的虚拟主机,纯粹只是rewrite出来欺骗的,但是很简单,而且只要一个泛域名就够了,能够满足一般的要求了,呵呵
Kandy 2004-06-30
  • 打赏
  • 举报
回复
To clansoft:
如果我的服务器上有 *.x.com 的二级域名系统, 又有 www.y.com www.z.com 等其他域名,这种办法就无法实现了阿

倒,除了默认的WEB站点外难道不能做虚拟主机吗?其他域名跟这个系统有什么关系呢?
clansoft 2004-06-30
  • 打赏
  • 举报
回复
有了一点进展.
但是还有点问题: 我用 x.abc.com/index.php 时访问无问题, 而用 x.abc.com/ 访问时返回的是 www.abc.com 的页面. 我又必须用到第一个重写规则,怎么办?
好像 !^/$ 这句不能匹配,换成 !^$ 也不行,是否我的规则有问题?

rewritecond %{HTTP_HOST} ^[^.]+\.abc.com$
rewritecond %{HTTP_HOST} !^www.abc.com$
rewritecond %{REQUEST_URI} !^/[^\./]+.php.*$
rewritecond %{REQUEST_URI} !^/$
rewriterule ^(.*)$ %{HTTP_HOST}$1 [C]
rewriterule ^([^.]+)\.abc\.com/(.*) /home/websites/htdocs/www.abc.com/$2 [L]

rewritecond %{HTTP_HOST} ^[^.]+\.abc.com$
rewritecond %{HTTP_HOST} !^www.abc.com$
rewritecond %{REQUEST_URI} ^/[^\./]+.php.*$ [OR]
rewritecond %{REQUEST_URI} ^/$
rewriterule ^(.*)$ %{HTTP_HOST}$1 [C]
rewriterule ^([^.]+)\.abc\.com(.*) /home/websites/htdocs/www.abc.com/com/$1$2 [L]

clansoft 2004-06-29
  • 打赏
  • 举报
回复
to Kandy(济沧海)
你上边根本没有提到 apache 对于这一块如何设置

apache怎么才能接受 子域名 呢? 总不能一条一条增加吧?

"置于126.com的程序分析出"kandy"这个用户名,自数据库中检索出该用户所对应的ip,然后重定向过去。"
这里说得非常笼统,我想这些应该是通过设置apache来实现的,能详细讲讲吗?是否必须用rewrite模块?

期待...
netying 2004-06-29
  • 打赏
  • 举报
回复
mark.
clansoft 2004-06-29
  • 打赏
  • 举报
回复
回lenton:

如果我的服务器上有 *.x.com 的二级域名系统, 又有 www.y.com www.z.com 等其他域名,这种办法就无法实现了阿
lenton 2004-06-29
  • 打赏
  • 举报
回复
错了,应该说是所有指向globalmi.com的域名
lenton 2004-06-29
  • 打赏
  • 举报
回复
济沧海的确已经说的很详细了,
我这里用的就是他的做法,你只要把这个文件放在WEB服务器的默认网站下就可以了,
以后所有指向这个WEB服务器的请求都会被这个文件截获,并取得“lenton.globalmi.com”中的lenton,然后去搜索数据库是否有这样的“lenton”记录,有的话就隐藏指向到真实的地址
我自己的网站就是这样解决的

干脆叫这个页面为redirect.php吧


<?
$dmd=$_SERVER['HTTP_HOST'];
$every=explode(".",$dmd);
?>



<?if($every[1]=="globalmi"){
require"conn.php";
$my_query=mysql_query("select *from global_comuser where no like '$every[0]'",$connect);
$array=mysql_fetch_array($my_query);
if($array[no]!=""){

?>

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="java-script"><!--
var message = "<?echo"欢迎光临".$array[com_name]."--由全球乐器网提供强力网站推广[http:\/\/www.globalmi.com]";?>";
function dgstatus()
{
window.status = message;
timerID= setTimeout("dgstatus()", 10);
}

dgstatus();

// --></script>

</head>
<frameset rows="0,*" frameborder="NO" border="0" framespacing="0">
<frame name="topFrame" scrolling="NO" noresize src="http://www.globalmi.com/no.htm" >
<frame name="mainFrame" src="http://www.globalmi.com/company/show/index.php?no=<?echo$array[no]?>">
</frameset>
<noframes>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes>
</html>
<?}elseif($array[no]==""){?>
<html>
<head>
<title>欢迎光临</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#ffffff" text="#000000">

<div align="center"><br><br><?echo$dmd?>,此域名尚未注册,<a href=http://www.globalmi.com target=_blank>点击与我们联系注册!</a></div>
</body>
</html>

<?
}
}elseif($every[1]=="huain"){
if($every[0]=="dzh"){
dns("仲冬和唢呐艺术网站","http://www.huain.com/zhongdonghe/");


}elseif($every[0]=="bbs7" and $every[1]=="huain" ){
dns("古典论坛","http://gudian.huain.com/bbs7/");

}

else{
echo$dmd.",此域名尚未注册!";
}

}elseif($dmd=="www.hzartschool.com" or $dmd=="hzartschool.com"){
echo"此域名已经转出";
}

else{
?>



<html>
<head>
<title>欢迎光临</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#000000" text="#000000">

<div align="center"><img src="index.jpg" width="700" height="525">
</div>
</body>
</html>

<?
}?>

<?

function dns($sitename,$src){
?>
<html>
<head>
<title><?echo$sitename?></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="java-script"><!--
var message = "<?echo"欢迎光临".$sitename;?>";
function dgstatus()
{
window.status = message;
timerID= setTimeout("dgstatus()", 10);
}

dgstatus();

// --></script>

</head>
<frameset cols='*' rows='*, 0'>
<frame src="<?echo$src?>" frameborder='0' scrolling='Auto' noresize marginwidth='0' marginheight='0'>
</frameset>
<noframes>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes>
</html>
<?}
?>
clansoft 2004-06-28
  • 打赏
  • 举报
回复
to Kandy(济沧海)
如果泛域名没有问题,那么apache如何设置呢?总不能一条一条增加吧,那样会累死人地.

是否必须用rewrite, 能详细讲解一下吗, 最好有实例.
Kandy 2004-06-28
  • 打赏
  • 举报
回复
apache没有什么好设置的,我觉得上边我已经说得很详细啦,你仔细看看
Tonglu 2004-06-22
  • 打赏
  • 举报
回复
有两步,
第一步:把用户的数据写入你自己的数据库中
第二步:定时与互联网DNS数据库更新

然后用微软发布的脚本就可以操作了,

http://msdn.microsoft.com/library/default.asp?url=/code/list/win2000.asp
找一找
Kandy 2004-06-18
  • 打赏
  • 举报
回复
基本例子是用WIN2000,IIS,ASP脚本来搞定的,当然用其他的组合LINUX,APACHE,PHP等也可以实现。
Kandy 2004-06-18
  • 打赏
  • 举报
回复
对了,上边有个“无语”应改成“济沧海”没改到,希望看了不会产生歧义,以前是用俺的网名写的东东,感觉CSDN上我的这个中文名字很土包……好在我不是经常来,也懒得改啦~
Kandy 2004-06-18
  • 打赏
  • 举报
回复
首先:更正,二级域名跟APACHE无关。
我记得我以前解答过不少类似的问题,现在把各种情况整理一下:*如有人转载请注明出处

xxx.126.com这类虚拟域名的实现办法,常见的有两种。

  一、真实域名。

  以设置kandy.126.com的域名为例。在126.com的dns服务器上,做kandy的A记录(若需要使用xxx@kandy.126.com的邮件,再增加一条相应的mx记录即可),自然喽,要想在你的个人主页上使用这个域名,你就快烧香拜佛的请免费空间提供商替你加个相应的主机头吧,呜呜!

  二、虚拟域名。

  上面这种“正统”的方法固然很“帅”,但是,每增加一条A记录,就需要折磨我们的系统管理员大哥,累啊!(要是做网易的xxx.126.com也这么做的话,怕是要累出人命来哦!)

  其实xxx.126.com的“虚拟域名”就在于这个“虚拟”上面,网易对126.com做了泛域名解(*.126.com),当客户端请求kandy.126.com时,置于126.com的程序分析出"kandy"这个用户名,自数据库中检索出该用户所对应的ip,然后重定向过去。

  为了让kandy.126.com变得更加真实一些,一般都是做一个上下的两帧页面,top帧的高度为0,下面的帧用于显示重定向后的网页。通过这种手段,访用者在地址栏上看到的永远是kandy.126.com的地址。

  1、泛域名解析
  . 对于unix/linux/bsd的用户,只需要添加一条"*.126.com"的记录即可。
  . nt4的dns,依"com --> 126 " 打开“126”域,添加一条"*"的A记录即可。
  . win2k需要在126域下新加一“*”域,然后添加名称为空的A记录。

  2、建立126.com的web站点
  注意的是,在建立这个站点的时候,不要添加"126.com"的主机头,否则,用xxx.126.com就无法访问到此站点了。

  3、程序实现。
  当访问者访问"http://kandy.126.com"或键入“kandy.126.com”访问时,取“SERVER_NAME”的环境变量,分析得到"kandy",然后做数据库检索,获得相对应的ip地址,再跳转。

  三、关于中文虚拟域名。

  IE在处理中文URL请求时,其默认值为“始终以UTF-8方式发送URL”,因此,在126.com处理“http://济沧海.126.com”的中文虚拟域名时,并不能得到“无语”的用户名,而是获得经过UTF-8编码的字符,牵一发动全身,随后的数据库检索也相应的受到影响。

  . 方法一:
         ----UTF-8解码---
         |           |
  SERVER_NAME--------------数据库检索--重定向


  . 方法二:

  既然MS要弄个UTF-8方式发送URL这等“狠毒”的办法,俺们也不是省油的灯啦,再加上又懒,不想去啃大堆大堆的UTF-8编码方法。

  处理英文的时候我们只做一个文件default.asp就可以搞定了,那们我们就累上一累,再多写个show.asp文件。

  在default.asp中定义一个上下帧,下帧的src=show.asp?SERVER_NAME=http://济沧海.126.com。

  通过这么一个中转,将URL转为以get方式传递的参数,自然就不存在UTF-8的编码方式啦。然后我在show.asp中获取这个SERVER_NAME,分析,数据库检索,重定向。。。。


  BTW: 其实虚拟域名的重点在于*.126.com的泛域名解析上面,这是基础的基础,若是你无法做你的dns记录,那就只好盯着别人的虚拟域名流口水喽。

hancheng 2004-06-18
  • 打赏
  • 举报
回复



二级域名由DNS解析的,
Apache只不过是把二级域名的访问转到相应的目录上。

加载更多回复(6)

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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