ThinkPHP3.1.3在啟用路由的情況下,其分頁地址不是路由的地址,由於thinkphp3.2.1的代碼也沒有修復,很多人都遇到了這一問題,本文采納olcms的修改方法解決這一問題,特別感謝phper jack對此做出的貢獻,具體解決辦法是修改ThinkPHP的functions.php的U方法,在287行左右:
if(!empty($vars)) { // 添加參數 foreach ($vars as $var => $val){ if('' !== trim($val)) $url .= $depr . $var . $depr . urlencode($val); }
後面加入以下代碼
/* * tp開啟路由之後下一頁路由失效問題 分頁類URL組裝 */ //如果開啟路由 if(C('URL_ROUTER_ON')){ foreach (C('URL_ROUTE_RULES') as $zhaolg => $zlig){//遍歷路由 if(strstr('/'.GROUP_NAME.$url,$zlig)){//從網址中找路由規則 $lg = strstr($zhaolg,'/:');//分析規則 帶參數? if($lg){//如果規則帶參數 $tempzlg = str_replace('/:','',$lg);//取參數 //dump($tempzlg); if($tempzlg){ if(C('APP_SUB_DOMAIN_DEPLOY')){ $zlgurl = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url); //url替換為路由規則 }else{ $zlgurl = str_replace($zlig,$zhaolg,$url); //url替換為路由規則 } //注 /s/:c/c/4/p/__PAGE__ //dump($zlgurl); $url = str_replace($lg.'/'.$tempzlg,'',$zlgurl);//url替換路由規則參數 } }else{//分析規則 不帶參數 if(C('APP_SUB_DOMAIN_DEPLOY')){ $url = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url);//url替換為路由規則 }else{ $url = str_replace($zlig,$zhaolg,$url);//url替換為路由規則 } } } } }
至此問題得以解決!