ThinkPHP6 页面跳转主要通过控制器 redirect() 方法实现,支持站内URL、命名路由、外部链接跳转,可传参、设状态码、配合Session闪存消息,AJAX场景可用JSON+JS跳转。

ThinkPHP6 中实现页面跳转主要通过控制器中的 redirect() 方法,它会自动返回 HTTP 重定向响应(302),并支持 URL 生成、参数传递、延迟跳转等常用功能。
使用 redirect() 进行基础跳转
在控制器方法中直接调用 redirect() 即可发起跳转,参数可以是完整 URL、路由地址或控制器/操作名:
-
跳转到站内 URL:
return redirect('index/index');(对应 index 模块的 index 操作) -
跳转到命名路由:
return redirect('@admin/dashboard');(需提前定义路由别名) -
跳转到外部链接:
return redirect('https://example.com');
带参数和状态码的跳转
redirect() 支持传入参数数组和 HTTP 状态码,便于构建动态跳转链接:
- 带 GET 参数:
return redirect('user/profile', ['id' => 123, 'tab' => 'info']);→ 跳转到/user/profile?id=123&tab=info - 指定状态码(如 301 永久重定向):
return redirect('home')->code(301); - 组合使用:
return redirect('order/detail')->with(['msg' => '提交成功'])->code(302);
配合 Session 闪存消息提示
跳转时常需要提示用户操作结果,可结合 with() 方法将数据写入 Session 闪存(仅下一次请求有效):
立即学习“PHP免费学习笔记(深入)”;
return redirect('article/list')->with('success', '文章已发布');- 在目标模板中读取:
{:session('success')}或 PHP 中session('success') - 支持多条消息:
->with('error', '验证失败')->with('warning', '请检查必填项')
前端 JS 跳转作为补充方式
少数场景(如 AJAX 提交后需跳转)不适合服务端 redirect,可用 JS 控制:
- 返回 JSON 响应:
return json(['code' => 1, 'url' => url('user/edit')]); - 前端接收后跳转:
window.location.href = res.url; - 注意:JS 跳转不经过路由解析,需确保返回的是完整可访问路径



















