当前位置:首页 - 后端

thinkphp3.2项目的地址跳转到thinkphp6项目的地址

发布时间:2022年04月13日 访问量:1721

项目由thinkphp3.2升级为thinkphp6之后,

百度收录的旧链接,是这样的:域名/index.php?m=&c=Article&a=lists&id=2

但是thinkphp6不支持上边那种格式,tp6中是这样的地址:域名/index/article/lists/id/2

为了不影响收录,需要让旧地址跳到新地址,我是这样做的:在app目录下的common.php中写一个函数:

function check_old_url(){
    $controller=input('c','','trim,strtolower');
    if(!empty($controller)){
        $action=input('a','index','trim,strtolower');
    }
    switch ($controller) {
        case 'article':
            $param=[];
            
            $id=input('id',0,'intval');
            if($id){
                $param['id']=$id;
            }
            
            $cate_id=input('category',0,'intval');
            if($cate_id){
                $param['category']=$cate_id;
            }
            
            $page=input('p',0,'intval');
            if($page){
                $param['page']=$page;
            }
            
            $retUrl=url($controller.'/'.$action,$param);
            $retUrl=str_replace('/index.php','',$retUrl);
            $response =redirect($retUrl);
            throw new \think\exception\HttpResponseException($response);
            break;
    }
}

然后在首页控制器的初始化方法中调用一下:

protected function initialize()
{
    check_old_url();
}

或者直接在入口文件index.php中调用一下,这样就能自动从旧地址跳到新地址了