前幾天 用dedecms5.7sp1給朋友做了一個(gè)站,他想要tag的地址以中文的方式展示
如: http://tem.xxx.com/tags/免費(fèi)版/
于是給他做了偽靜態(tài),然后偽靜態(tài)時(shí),我把include/taglib/tag.lib.php里邊的的
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
改成了
?$row['link'] = $cfg_cmsurl."/tags/".($row['keyword'])."/";
把urlencode也去掉了,剛開(kāi)始在本地是可以的,做完了把網(wǎng)站搬到服務(wù)器時(shí),(他的服務(wù)器是Linux(centos)的),發(fā)現(xiàn)dedecms tag有問(wèn)題,老是提示:
系統(tǒng)無(wú)此標(biāo)簽,可能已經(jīng)移除!
你還可以嘗試通過(guò)搜索程序去搜索這個(gè)關(guān)鍵字:前往搜索>>
但英文的又可以,我想肯定是編碼有問(wèn)題,上網(wǎng)查了下,果然如此,然后用了以下的方法完美解決了問(wèn)題!
先在根目錄下找到tags.php打開(kāi)后將以下代碼注釋掉:
$tag = trim($_SERVER['QUERY_STRING']);
找到上面一行,把他注釋了,然后添加這行$tag = strtolower(trim($_SERVER['QUERY_STRING']));這句的意思是判斷UTF8編碼的字符,如果是UTF8則轉(zhuǎn)換為GBK!此時(shí)你再刷新,如果還不行,那么重來(lái)!把上面添加的刪了,取消注釋(不同的服務(wù)器可能出現(xiàn)的情況不一樣,所以有兩種解決辦法)
第一步、打開(kāi)tags.php,在$tag = trim($_SERVER['QUERY_STRING']);下面添加下面的代碼,切記是下面,否則不行
function is_utf8($tag)
{
if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$tag) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$tag) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$tag) == true)
{
return true;
}
else
{
return false;
}
}
第二步、找到
$tag = FilterSearch(urldecode($tag));
上面添加
if(is_utf8($tag)==1) { $tag = iconv("utf-8","gbk",$tag); }
這個(gè)作用就是調(diào)用上面的函數(shù)判斷編碼 如果是 utf8則轉(zhuǎn)為gbk!如果你現(xiàn)在保存刷新的話,中文是可以了,但是部分tag還是會(huì)出錯(cuò)的,比如:JvavScript SEO 等等這樣子的(區(qū)分大小寫(xiě)),所以還差最后一步最后一步、把$tag = FilterSearch(urldecode($tag));注釋了,添加下面的這行
$tag = urldecode($tag);也就是去掉 FilterSearch();此時(shí)、dedecms提示 系統(tǒng)無(wú)此標(biāo)簽,可能已經(jīng)移除!的問(wèn)題就解決了,還有不懂的可以在下面留言,我會(huì)及時(shí)的給你們答復(fù)!
版權(quán)聲明: 本站資源均來(lái)自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明: DedeCMS 5.7提示“系統(tǒng)無(wú)此標(biāo)簽,可能已經(jīng)移除”的解決方法