近期在做一個專案的時候使用者要求網站要中英兩種語言。當時設想 中文則使用 /cn 二級目錄,英文使用 /en 目錄,而不加目錄訪問時根據使用者計算機所使用的語言進行判斷,並跳轉至對應的目錄下。起初做了一個根據使用者安裝語言進行判斷的例項,但是在模擬蜘蛛抓取的時候發現百度總是進入英文目錄,之前沒有做過多語言的網站,所以這塊應該如何處理自己也不是非常清楚,於是在就判斷計算機安裝語音的基礎上又增加了對主流搜尋引擎的判斷,使國內的主流搜尋引擎進入中文頁面,而其他搜尋引擎進入英文頁面。下面是整個例項程式碼:
<?php $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); //獲取使用者語言 $lang = substr($lang,0,2); //獲取語言簡寫 $useragent = strtolower($_SERVER['HTTP_USER_AGENT']); //獲取蜘蛛爬行 $lang_cn = 'https://www.jiangfei.net/ly/index.html'; //定義中文連結 $lang_en = 'https://www.jiangfei.net/ly/en.html'; //定義英文連結 //按蜘蛛型別判斷 if (strpos($useragent,'googlebot')){ //google 谷歌 header("location: ".$lang_en); } elseif (strpos($useragent,'baiduspider')) {//baidu 百度 header("location: ".$lang_cn); } else if (strpos($useragent, 'msnbot')){ //bing 必應 header("location: ".$lang_cn); } elseif (strpos($useragent, 'slurp')){ //Yahoo 雅虎 header("location: ".$lang_en); } elseif(strpos($useragent, 'sosospider')){ //sousou 搜搜 header("location: ".$lang_cn); } elseif (strpos($useragent, 'sogou spider')){//sougou 搜狗 header("location: ".$lang_cn); } elseif (strpos($useragent, 'yodaobot')){ //youdao 有道 header("location: ".$lang_cn); } //按使用者瀏覽器語言判斷 elseif($lang = "zh" ){ //中文使用者 header("location: ".$lang_cn); //非中文使用者 }else{ header("location: ".$lang_en); } ?>
如果想獲取使用者安裝語言進行判斷,先使用:
$lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); //獲取使用者語言
這時我輸出 下面程式碼的時候會得到:zh-cn,zh;q=0.8,en;q=0.6
echo $lang;
其實我們主要是需要前面的zh-cn,如果網站有更多語言需要的話 如 繁體中文,那需要擷取前面5個字元,由於只有簡體中文,那我就只擷取了前面兩個字元,只保留前面的 zh,用於對搜有中文(繁體和簡體)使用者的判斷。
$lang = substr($lang,0,2);