thinkphp框架的分页伪静态如何优化实现

技术知识
0 1930
小师傅 小师傅2020-05-28
积分:2397

thinkphp框架是国内知名的php开发框架,但是在分页问题上对seo并不是很优好,所以我们要将其伪静态化,下面我们改进框架分页规则,让其更利于seo优化。


一、改造说明


示例网址:

http://www.demo.com/list/345.html    第一页

http://www.demo.com/list/345.html?page=2    第二页

http://www.demo.com/list/345.html?page=3    第三页


原有模式如上,均采用GET方式传递参数以?page作为标记,我们将其改造成以GET方式传参以   "_"方式标记,示例网址如下:


http://www.demo.com/list/345.html    第一页

http://www.demo.com/list/345-2.html    第二页

http://www.demo.com/list/345-3.html    第三页


二、改造代码

方案一:全站改造

使用方式:项目下(根目录中)\thinkphp\library\think\Paginator.php,把153行的替换了

1.png

if (!empty($parameters)) {
    // new batch start
    foreach($parameters as $vv){
        if($vv > 1) {
            //非首页
            if($this->currentPage == 1){
                //
                $suffix = '.' . config('url_html_suffix'); //伪静态后缀
            }else{
                $suffix = '-' . $this->currentPage . '.' . config('url_html_suffix'); //伪静态后缀
            }
            $url    = str_replace($suffix, '-', $url);
        } else {
            //首页,只保留协议部分
            $suffix = '-' . $this->currentPage . '.' . config('url_html_suffix'); //伪静态后缀
            $url    = str_replace($suffix, '', $url);
        }
        if($vv == 1){
            $url .= '.html';
        }else{
            $url .= $vv.'.html';
        }
    }
}

方案二:前台改造

if (!empty($parameters)) {
    if(strpos('此处为后台路径',$url)){
        $url .= '?' . http_build_query($parameters, null, '&');
    }else{
        // new batch start
        foreach($parameters as $vv){
            if($vv > 1) {
                //非首页
                if($this->currentPage == 1){
                    //
                    $suffix = '.' . config('url_html_suffix'); //伪静态后缀
                }else{
                    $suffix = '-' . $this->currentPage . '.' . config('url_html_suffix'); //伪静态后缀
                }
                $url    = str_replace($suffix, '-', $url);
            } else {
                //首页,只保留协议部分
                $suffix = '-' . $this->currentPage . '.' . config('url_html_suffix'); //伪静态后缀
                $url    = str_replace($suffix, '', $url);
            }
            if($vv == 1){
                $url .= '.html';
            }else{
                $url .= $vv.'.html';
            }
        }
    }
}


三、路由改造

Route::get('articleList/<id>$', 'Index/articleList'); //文章列表
Route::get('articleList/<id>-<page>', 'Index/articleList'); //文章列表

这里我用的是两个变量,单变量的去掉一个即可


四、seo标题优化

/**
 * 文章列表
 * @param int $page
 * @param int $id
 * @return \think\response\View
 */
public function articleList($id,$page = 0)
{
    if ($page) {
        $title = '我是列表第' . $page . '页数';
 
    } else {
        $title = '我是列表';
    }
    return view();
}


精选帖子
Android 可可影视 v3.3.6无广告纯净版 3091
Android QQ音乐 v11.3.7 定制版解锁免费听歌无广告版 3672
Android 草图大师SKP v1.5 解锁会员版 9024
Android OmoFun追漫神器 v4.2.1 无广告绿色版 6066
AdobeGenP Adobe全家桶系列激活工具 v3.5.0/3.4.14.1 绿色版 6647
Android 七猫免费听书 v1.4 解锁高级版 5055
超良心的抢票神器——Bypass1.16 4788
Android 玲珑加速器 v6.10.9.40 解锁无限时间 3441
Android 大师兄影视 v3.3.8 去广告会员版 2568
热门帖子
一键激活Win系统和Office办公软件,最强电脑激活KMS HUE工具,免费永久可用,支持win系统使用 58
得间免费小说 v5.5.8.1 免费网文追书APP 54
酷我音乐 v12.1.8.2 无损音乐播放APP 去广告解锁会员版 51
ChatGPT+Codex电脑自动化课:环境搭建×三大核心实战×全场景应用拓展×AI自主操控电脑×零基础上手 51
豆丁视频 v3.3.0 高清影视播放 免费追剧APP 46
蚂蚁视界 v6.7.0 高清影视追剧APP 全品类视频播放软件 45