大家可以嘗試一下用手機訪問我公司官方網(wǎng)站(www.haobangzs.com),系統(tǒng)會自動識別并跳轉(zhuǎn)到手機版網(wǎng)站去;同樣的,如果使用電腦訪問手機版網(wǎng)站(m.chuangluo.com),系統(tǒng)也會自動識別并跳轉(zhuǎn)到對應的電腦版網(wǎng)址去。目前已經(jīng)有很多同時擁有手機版網(wǎng)站和電腦版網(wǎng)站的大型企業(yè)網(wǎng)站使用了這樣的技術(shù),那小型公司網(wǎng)站如果也有這種需求的話,應該如何實現(xiàn)呢?
實現(xiàn)手機版網(wǎng)站和電腦版網(wǎng)站的自動識別并跳轉(zhuǎn)的條件
首先肯定是需要有兩個不同版本的網(wǎng)站,這是必然的!第二個條件是這兩個版本的網(wǎng)站數(shù)據(jù)要基本同步。以我公司官方網(wǎng)站為例,電腦版網(wǎng)站的頁面比手機版的多,手機版有的頁面,電腦版全部都有。這是因為我們電腦版網(wǎng)站上有很多靜態(tài)的專題頁,而手機版則沒有,例如:網(wǎng)站價格評估、域名查詢等。因此,我們只需要實現(xiàn)自動識別這一部分頁面并跳轉(zhuǎn)即可。
如何實現(xiàn)自動識別并跳轉(zhuǎn)
由于我公司目前開發(fā)網(wǎng)站的語言是主流的PHP,因此我們此處只討論PHP的實現(xiàn)方法,其他語言請直接參考本方法稍作修改即可。核心原理是通過程序判斷$_SERVER[?HTTP_USER_AGENT?]中是否包含了手機訪問的一些特征信息,例如屏幕尺寸,手機品牌或者其他特征信息。此處一提供兩個方法供大家參考:
方法一:
判斷函數(shù)
function is_mob() {
$user_agent = $_SERVER[?HTTP_USER_AGENT?];
$mob_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
$is_mob = false;
foreach ($mob_agents as $device) {
if (stristr($user_agent, $device)) {
$is_mob = true;
break;
}
}
return $is_mob;
}
調(diào)用函數(shù)
if(is_mob())
{
//通過$_SERVER["REQUEST_URI"]取出具體頁面網(wǎng)址,修改域名后并跳轉(zhuǎn)。
}
方法二:
$ua = strtolower($_SERVER[?HTTP_USER_AGENT?]);
$uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile)/i"
if(($ua == ?? || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER[?REQUEST_URI?]),?wap?))
{
//通過$_SERVER["REQUEST_URI"]取出具體頁面網(wǎng)址,修改域名后并跳轉(zhuǎn)。
}
兩種方法中推薦使用第一種,識別率相對較高;第二種效率更高,但識別率相對較低。兩種方法均整理自互聯(lián)網(wǎng),大家在使用的時候可以稍加修改,以實現(xiàn)更多功能。