请教域名问题

假设有个网站www.roger.com,并且用asp制作了具有会员制的网页,我希望用户可以以http://username.roger.com这种url来登录其个性化页面,例如在我的网站里注册有三个用户,一个是aaa,一个是bbb,一个是ccc,我想做到aaa用http://aaa.roger.com即可登录,同样的,bbb可以用http://bbb.roger.com来登录……可以用asp程序来实现吗?还是只能靠dns做域名解析?请指教!谢谢!
p.s. 我是在虚拟主机上面建设网站的
---------------------------------------------------------------

一般情况下是需要域名泛解析的,但现在有些网站提供20个免费的域名(如“新网”),但这20个域名只可以作为转向(不支持隐藏转发)。
你可以看看以下我提供给你的一篇文章,希望对你有所帮助:

相信大家都申请过某些站点上提供的免费二级域名,例如网易的youname.yeah.net、youname.126.com等,这是用什么方法来实现的?现在我就用一个简单的二级域名跳转程序来为大家解开这一头雾水。首先让我们来看看下面的程序,下面的方法是通过默认首页来调用CGI程序达到判断分析并跳转,我们把一页面置于默认的首页(底下有介绍)当我们访问站点时例如:http://www.cpcw.com的时候,默认首页通过JAVASCIPT调用CGI程序,在程序里我们通过环境变量取得浏览器里输入的URL,对URL通过判断,得出是否二级域名,如果是二级域名就打开我们存储二级域名的文本,获取制定的URL,然后跳转。如果不是二级域名,就跳转到程序里设置的页面。这样,一个简单扼要的二级域名跳转程序就实现了。

####程序开始####
$myur ="cpcw.com"; # 变量赋值 域名的后序
$head="/home/cpcw/"; # 变量赋值 纪录域名文档的目录路径
$ur fi e="fi e.txt"; # 变量赋值 纪录域名文档文件名
$myhome= "http://www.cpcw.com/main.htm"; # 变量赋值 主页的真实URL
@getur = sp it(/&/, $ENV{'QUERY_STRING'});#使用sp it函数拆分脚本参数或者表单输入项,然后赋予@ocpur
foreach (@getur ) {
($name,$va ue) = sp it(/=/, $);
&setfrom($name, $va ue);
}#循环拆分数组@getur 把其中的值分别赋予变量name和va ue并调用子程序setfrom对变量加以处理
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = sp it(/&/, $buffer);
foreach (@pairs) {
($name, $va ue) = sp it(/=/, $
);
&setfrom($name, $va ue);
}#读取用POST递交的表单, 标准输入口的字节数,循环拆分字节赋予变量name和va ue并调用子程序setfrom对变量加以处理
$ur =&getvar('ur ' ,'\n‖');
$id =&getvar('id' ,'\n‖');
$ur ="$myur " if (!($ur =~ /.:.\../ ));#从递交的表单里提取相对应的值赋予变量
$userip=$ENV{'REMOTE_ADDR'};#提取递交脚本的主机IP地址赋予变量
$ur =~s/Http:////g;
$ur =~s/HTtp:////g;
$ur =~s/HTTp:////g;
$ur =~s/HTTP:////g;
$ur =~s/http:////g;
$ur =~s/hTTP:////g;
$ur =~s/htTP:////g;
$ur =~s/httP:////g;
$ur =~s/hTtP:////g;
$ur =~s/HtTp:////g;
$ur =~s/HttP:////g;
$ur =~s/hTTp:////g;
$ur =~s/HTtP:////g;
$ur =~s/htTp:////g;
$ur =~s/HtTP:////g;
$ur =~s/hTtp:////g;
#把所有可能输入的http://方式都替换成空
if (/$ur /i != ~$myur ){
&error("域名不正确");
exit 0;
}
@name1=sp it(/\./,$ur );
$name2=$name1[0];
$name2=~tr/A-Z/a-z/;
#对从浏览器输入的$ur 变量做一些处理
open (FILE,"$head$ur fi e");
@ ine=& t;FILE>;
c ose (FILE);
#打开我们存储数据的文件并作赋值给@ ine
foreach (@ ine){
@ ine1=sp it(//,$);
if ($ ine1[0] eq $name2){
$ur ink=$ ine1[1];
}
}
if ($ur =~/^$myur /i){
$ur ink=$myhome;
}
if(!($ur ink)){
printf "无该域名";
exit 0;
}
print "Location: $ur ink\n\n";
exit 0;
sub setfrom {#对变量$name和$va ue做一些处理和过滤
$na
me=$
[0];
$va ue=$[1];
$name=&de($name);
$name=&fi ter($name);
$va ue=&de($va ue);
$va ue=&fi ter($va ue);
if ($FORM{$
[0]}) {$FORM{$[0]}="$FORM{$[0]}§$[1]";}
e se {$FORM{$
[0]}=$[1];}
}
sub de{
oca ($return)=$
[0];
$return =~ tr/+/ /;#将加号转换成为空格
$return =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#将字符转换成指定格式,将十六进制值变成对应的字符。
$return =~ s/\n/& t;br>/g;#把所有的\n转换成& t;br>
return $return;
}
sub fi ter{#对$return做过滤
oca ($return)=$_[0];
$return =~ s///g;
if ($a ow_htm != 1) {
$return =~ s/& t;([^>]\n)
>//g;
$return =~ s/& t;//g;
}
return $return;
}
sub getvar {#从表单里取值的子程序
oca ($return)="";
$return="$FORM{$[0]}" if ($FORM{$[0]});
$return=~ s/$_[1]//g;
return $return;
}

以上的程序还要配合一个HTML页面来实现,我们需要把这页面做为首页,他会通过Javascript代码自动连接
我们上面的程序,程序通过判断,分析是否是二级域名,如果是就打开我们的存储文件查找并做跳转。
& t;htm >
& t;head>& t;script anguage="Javascript">
NonJava =document.URL;
NON="">";
document.write('& t;meta HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://www.cpcw.com/name.cgi?ur ='+NonJava+NON);
& t;/script>
& t;tit e>& t;/tit e>
& t;/head>
& t;body>
& t;/body>
& t;/htm >

Published At
Categories with Web编程
Tagged with
comments powered by Disqus