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