ThinkPHP3.1.3在启用路由的情况下,其分页地址不是路由的地址,由于thinkphp3.2.1的代码也没有修复,很多人都遇到了这一问题,本文采纳olcms的修改方法解决这一问题,特别感谢phper jack对此做出的贡献,具体解决办法是修改ThinkPHP的functions.php的U方法,在287行左右:
1
2
3
4
5
6
|
if (! empty ( $vars )) {
// 添加参数
foreach ( $vars as $var => $val ){
if ( '' !== trim( $val ))
$url .= $depr . $var . $depr . urlencode( $val );
}
|
后面加入以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/*
* 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替换为路由规则
}
}
}
}
}
|
至此问题得以解决!