最近在做一个项目,设置路由后,一切访问正常,但是分页忽然不能用了,上网查了很久,终于弄出来了,下面为方法
初始路径:
http://www.XXXX.com/index.php/Home/Index/morexuxiao.html
设置路由和隐藏index.php后路径如下
http://www.XXXX.com/morexuxiao.html
但是分页出现如下故障
http://XXXX.com/Index-morewuxiao-p-2.html文章直接回到了首页无法访问
解决方法:修改分页类。路径Library\Think\Page.class.php分类以支持路由 1、新增分页适配路由 (1)有参数
'/^Index\/morewuxiao\/(\d+)-(\d+)$/' => 'Index/morewuxiao?id=:1&p=:2', (2)无参数
'/^Index\/morewuxiao\/(\d+)$/' => 'Index/morewuxiao?&p=:1', 2、修改分页类Library\Think\Page.class.php //在23行,修改访问修饰符private为public public $url=''; //在70行,防止经过传参后会出现问题urlencode('[PAGE]')转为小写,修改为 $this->url = str_replace(strtolower(urlencode('[PAGE]')), $page, $this->url);//开启URL不区分大小写时处理 return str_replace(urlencode('[PAGE]'), $page, $this->url); //在80行,修正为以下实现自定义URL /* 生成URL */ if(empty($this->url)){ $this->parameter[$this->p] = '[PAGE]'; $this->url = U(ACTION_NAME, $this->parameter); }
3、控制器中使用方法
$Page = new \Think\Page($count, 12);// $page_tpl = urlencode('[PAGE]'); $Page->url = U("articlelist/{$page_tpl}"); //$Page->url = U("articlelist/{$this->typeid}-{$page_tpl}");//带参数形式 参考网址:http://www.thinkphp.cn/topic/22114.html