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替換為路由規則
}
}
}
}
}
至此問題得以解決!