直播中
很多網(wǎng)友可能發(fā)現(xiàn),現(xiàn)在在一些網(wǎng)站中,特別是個(gè)人網(wǎng)站中發(fā)現(xiàn)有使用youname@xxx.com的虛擬域名。當(dāng)我告訴我朋友的時(shí)候他們都說這不是電子郵件的地址嗎?其實(shí)本來確實(shí)是的,不過要是將它輸入到瀏覽器的地址中時(shí),它就不是了,而是地地道道地一個(gè)子級(jí)域名。不信的話,你在瀏覽器中輸入http://bbs@luyu.net和http://guestbook@luyu.net看看。是不是發(fā)現(xiàn)他們是兩個(gè)不同的地址呢,前者是本站BBS登錄頁,后者是本站留言簿,而本站卻是首頁是http://luyu.net,很酷吧。 有的網(wǎng)友也問為什么不用http://bbs.luyu.net和http://guestbook.luyu.net做虛擬域名呢,這才是真正的二級(jí)子域名啊。因?yàn)檫@在實(shí)現(xiàn)方面沒什么不同,只是“?!痹谟蛎械淖饔每纱蟛灰粯樱憧梢杂胔ttp://www.luyu.net訪問,確不是http://www@luyu@net吧,因?yàn)椤??!币紤]到一個(gè)解析解碼的問題。所以要做“?!钡奶摂M域名必須要讓域名服務(wù)商開通泛域名的作用,就是只要在瀏覽器的地址欄中鍵入*.luyu.net的域名,都會(huì)先到luyu.net服務(wù)器上去請(qǐng)求解析解碼服務(wù),這樣的話,實(shí)現(xiàn)起無限多個(gè)免費(fèi)的“?!碧摂M域名就不是難是了。關(guān)鍵大部分泛域名的開通是要收100到200元人民幣的,所以我們暫不考慮而考慮用免費(fèi)的@域名了。有的網(wǎng)友也問為什么不用“!#$%”其他的符號(hào)而偏偏要用@呢,這一點(diǎn)在看完下面的文章你自然就會(huì)明白了。
通過本文章你就可以做出屬于自己的@域名了。到時(shí)候自己就是管理員,想加什么鏈接都可以,包括中文的,想想直接打http://壁紙@luyu.net那多爽啊。不過中文要注意的是UTF-8規(guī)范問題。
下面我們就先講一下實(shí)現(xiàn)@虛擬域名的方方面面。
@虛擬域名的實(shí)現(xiàn)始于在瀏覽器中直接以用戶和密碼的方式登錄FTP服務(wù)器的方法。如:在瀏覽器的地址欄中鍵入password:username@ftp://my.ftp.com,此時(shí)IE就會(huì)自動(dòng)以用戶 “username” 和密碼 “password”登陸FTP服務(wù)器;相當(dāng)于先在瀏覽器的地址欄中鍵入ftp://my.ftp.com,進(jìn)入登錄頁面,再在提示下輸入用戶名和密碼一樣。這是為什么呢?原來在http1.1協(xié)議中,就規(guī)定實(shí)現(xiàn)了http的訪問授權(quán)功能,形式就如同上面的password:username@FTP或是以header發(fā)送的服務(wù)器主機(jī)。然后其中的password一項(xiàng)可以省略,也就是說訪問username@服務(wù)器主機(jī),就等于是以u(píng)sername的身份訪問此服務(wù)器主機(jī)一樣,就樣我想大家就會(huì)明白為什么我們可以用@,而不用其他的符號(hào)了吧。所以說guestbook@luyu.net,實(shí)際上就是以guestbook的用戶來訪問luyu.net主機(jī),可為什么能訪問到留言簿的頁面呢?其實(shí)這只是個(gè)簡單的頁面跳轉(zhuǎn)功能而以,具體的在下面將討論到。
實(shí)現(xiàn)跳轉(zhuǎn)的功能就是指當(dāng)用戶進(jìn)入一個(gè)頁面時(shí),此頁面會(huì)自動(dòng)的鏈接到一個(gè)新的頁面。例如:你在打http://luyu.net時(shí),進(jìn)入的其實(shí)不是http://luyu.net/index.html或是http://luyu.net/default.html而是def.html。這可是不我自作多情修改了服務(wù)器的默認(rèn)連接文檔,況且大部分情況上你也修改不了(因?yàn)椴皇亲约旱姆?wù)器)。其實(shí)你在打http://luyu.net時(shí),瀏覽器還是先進(jìn)入default.html頁面,然后由里面的javascript來進(jìn)行轉(zhuǎn)向,不信的話,你可以打開我的default.html文檔看看就知道了,不過下面我們也會(huì)把它貼出來的。
其實(shí)我的default.html文檔中只有下面的幾行:
<script>
this.location = "gourl.asp?user=" + this.location.href;
</script>
只有短短的三行代碼,其實(shí)他的作用就是實(shí)現(xiàn)轉(zhuǎn)向,當(dāng)網(wǎng)友輸入http://bbs@luyu.net時(shí),實(shí)際上這段代碼就是將這個(gè)值賦給user變量,并轉(zhuǎn)送給gourl.asp文件中去,以便處理。其實(shí)user的值關(guān)鍵就在于@前的http://后的那些字符,在這兒是“BBS”,而http://guestbook@luyu.net中就是“guestbook”。我們得到這些字符后,再進(jìn)行相應(yīng)的轉(zhuǎn)向其真實(shí)的網(wǎng)址。
如:如果得到的值的“BBS”,我們就轉(zhuǎn)到http://luyu.net/free這個(gè)網(wǎng)址。那么如果知道是http://luyu.net/free呢,我們可以通過文本或數(shù)據(jù)庫等來來讀。這里我們選擇ACCESS數(shù)據(jù)庫,因?yàn)楣芾砥饋肀容^方便,而且支持ASP的主機(jī)一般都是支持ACCESS的。
下面是庫中的url表結(jié)構(gòu):
字段名 字段類型 字段默認(rèn)值 //功能注釋
id int 自增 關(guān)鍵字 1 不用user做關(guān)鍵字是怕其中有中文字符
user 字符型 null 如BBS或GUESTBOOK的值
url 字符型 null 轉(zhuǎn)向的網(wǎng)址
click int 0 訪問量
表里的字段很少,只有4個(gè),網(wǎng)友可以根據(jù)需要再增加一些功能字段,如是否有彈出窗口廣告,訪問量分析等。不過必要的就是user字段和url字段,因?yàn)槲覀儽仨氁玫絬ser的值,再根據(jù)它得到其轉(zhuǎn)向url網(wǎng)址,再在gourl.asp中實(shí)現(xiàn)轉(zhuǎn)向就行了。
下面是gourl.asp中實(shí)現(xiàn)轉(zhuǎn)向的全部程序(我會(huì)在程序中寫下注釋):
dim conn,dbs //定義變量
Set conn=Server.CreateObject("ADODB.Connection") //建立連接對(duì)象
dbs=server.mappath("url.mdb") //定義要連接的數(shù)據(jù)庫路徑
conn.open "driver={microsoft access driver (*.mdb)};dbq="&dbs //打開并實(shí)現(xiàn)其數(shù)據(jù)庫源的鏈接
user=trim(request.querystring("user")) //得到default.html文件中得到的在瀏覽器中輸入的網(wǎng)址
if user<>"" then //當(dāng)user值不為空時(shí)
user=replace(user,"http://","") //將“http://”字符串從user值刪去
at=instr(user,"@") //將user值中“@”所在位置賦給變量at
else
response.write "信息出錯(cuò),請(qǐng)聯(lián)系moon!" //當(dāng)user值為空時(shí)則告訴網(wǎng)友有錯(cuò)
end if
if at>0 then
user=left(user,at-1) //當(dāng)user值中“@”所在的位置大于0時(shí),將其中的部分重賦給user,如“BBS”或“ GUESTBOOK”等值
else
response.redirect "def.htm" //如果沒有得到其中的值,如打http://www.luyu.net時(shí),就返回def.htm文件中。
response.end //停止輸出
end if
if user<>"" then
set rs=conn.execute("select url from dns where user='"&user&"'") //當(dāng)user值不為空時(shí),連接數(shù)據(jù)庫,將進(jìn)行搜索
if not rs.eof then
conn.execute(“update url set click=click+! Where user=’”&user&”’”)//當(dāng)記錄不為空時(shí),將此網(wǎng)站的訪問量加1
response.redirect rs("url") //再轉(zhuǎn)向其網(wǎng)站
else
response.write "抱歉,沒有這個(gè)網(wǎng)站!" //記錄為空時(shí),警告網(wǎng)友沒有此網(wǎng)站
end if
set rs=nothing
else
response.write"抱歉,沒有這個(gè)域名!" //當(dāng)user的值為空時(shí),則警告網(wǎng)友沒有此域名
end if
set conn=nothing //關(guān)閉數(shù)據(jù)庫連接
如果想在訪問虛擬域名時(shí)做個(gè)彈出窗口,以幫自己做個(gè)廣告的話,可以在將上面的代碼改成:
<script>
window.open("http://luyu.net","網(wǎng)絡(luò)隨筆","width=350,height=450");
this.location = "gourl.asp?user=" + this.location.href;
</script>
好了,這樣一個(gè)域名訪問系統(tǒng)就簡單的做好了。如果和PHP或是JSP等來實(shí)現(xiàn)的話,原理也是一樣的,我相信大家看了這篇文章都可以做出來了。只是把gourl.asp文件改一下便可。
當(dāng)然如果再加上管理系統(tǒng)就更會(huì)變得非常的完善,網(wǎng)友可以自己寫寫看,也可以參考我的下一篇(管理篇)。由于本人水平有限,錯(cuò)誤在所難免,希望大家提提意見。如果問題或想看PHP和JSP版本的程序請(qǐng)?jiān)L問http://luyu.net社區(qū),給我留言,謝謝。