项目由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中调用一下,这样就能自动从旧地址跳到新地址了
下一篇:没有了