幾年來(lái),筆者通過(guò)建設(shè)多城市家教網(wǎng)站,獲得了一些用PHP建設(shè)多城市分站的經(jīng)驗(yàn),采用二級(jí)域名的方式進(jìn)行實(shí)現(xiàn),稍作整理,希望為你提供一些幫助,權(quán)當(dāng)解決方案。咱們??吹降姆诸愋畔⒕W(wǎng)、多城市家教網(wǎng)站、多城市招聘網(wǎng)站等,都是采用這一技術(shù)實(shí)現(xiàn)的。
域名泛解析
大多數(shù)的域名提供商都支持泛解析,在域名解析面板中,將主機(jī)名設(shè)置為*號(hào),然后做A記錄指向到某個(gè)IP,或用NAME記錄指向到某個(gè)域名。所謂泛解析是一個(gè)任意前綴的解析,假設(shè)域名為mydomain.com,泛解析的結(jié)果為*.mydomain.com,*號(hào)處可以是任何域名字符,例如a.mydomain.com或者b.domain.com,這就是二級(jí)域名。為什么要這么做?這是因?yàn)榭紤]到多城市網(wǎng)站的前綴可能是多元化的,比如深圳分站可能是sz.mydomain.com,北京分站為bj.mydomain.com。采用泛解析的意義就在于此,使網(wǎng)站支持任何城市的分站二級(jí)域名并指向到同一臺(tái)服務(wù)器。
分站識(shí)別
上面通過(guò)域名泛解析已經(jīng)實(shí)現(xiàn)了城市二級(jí)域名指向,那么,如何在PHP程序里判斷當(dāng)前二級(jí)域名是哪個(gè)分站?然后根據(jù)二級(jí)域名的前綴從數(shù)據(jù)庫(kù)中讀取對(duì)應(yīng)分站的信息并將當(dāng)前分站的內(nèi)容顯示在網(wǎng)站里。先看代碼:
$myarr = explode('.',$_SERVER['HTTP_HOST']);
//獲取當(dāng)前主機(jī),即當(dāng)前請(qǐng)求的域名。例如請(qǐng)求網(wǎng)址為http://sz.domain.com,將獲得sz.domain.com。再通過(guò)explode函數(shù)進(jìn)行分割。
$Quest_City = $myarr[0];
//從分割的數(shù)組中取第一個(gè)數(shù)組元素,即獲得sz
獲得當(dāng)前分站的域名前綴標(biāo)識(shí)后,再寫一段程序,對(duì)分站數(shù)據(jù)庫(kù)里看看是否已經(jīng)在后臺(tái)開(kāi)通了該程序的分站。若沒(méi)開(kāi)通,則顯示錯(cuò)誤信息。如果已經(jīng)開(kāi)通了,再根據(jù)分站標(biāo)識(shí)獲得分站ID。注意,網(wǎng)站中的數(shù)據(jù)記錄需要有分站ID字段,這樣才能根據(jù)分站ID獲取當(dāng)前分站下的內(nèi)容。
通過(guò)上面的解決方案,可以實(shí)現(xiàn)用二級(jí)域名實(shí)現(xiàn)多城市分站的功能。本文講得比較簡(jiǎn)單,可以提供一個(gè)解決思路,具體實(shí)施,還要看程序員的理解能力。其實(shí),建立多城市分站并不是很難,只是在普通網(wǎng)站的基礎(chǔ)上增加了泛解析與分站識(shí)別和管理的功能而已。