移动端路由需手动分组实现,thinkphp不支持ua自动识别;应通过独立分组(如/m/)、命名路由、mobileredirect中间件前置跳转、分离控制器及session隔离来保障正确性。

移动端路由不是靠“自动识别设备”来配的,ThinkPHP 本身不提供 UA 检测路由分发能力;真要实现「PC 跳移动端」或「同路径不同控制器」,得靠显式分组 + 中间件 + 请求判断组合实现,否则容易掉进 404 或无限重定向坑里。
移动端路由必须手动分组,不能依赖全局规则
ThinkPHP 不会根据 User-Agent 自动切换路由表。所谓“移动端路由”,本质是两套独立路由逻辑:一套给 PC,一套给 Mobile,它们共存但互不干扰。
- 把移动端路由写在独立分组里,比如
Route::group('m', function () { ... }),前缀统一为/m/或/mobile/,避免和 PC 路由冲突 - 不要试图用
Route::rule()配一个正则去“匹配 UA 并跳转”,那不属于路由层职责,且无法在路由定义阶段读取请求头 - 若想复用控制器但行为不同,应拆成两个控制器(如
app\controller\pc\Index和app\controller\mobile\Index),而不是在同一个方法里 if-else 判 UA
跳转逻辑必须放在中间件,别塞在控制器或路由闭包里
从 PC 端 URL(如 /article/123)自动跳转到移动端 URL(如 /m/article/123),这个动作必须前置——在路由解析完成前就做判断,否则控制器已执行,再跳就是 302 响应,破坏 RESTful 语义。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 写一个
MobileRedirect中间件,在handle()里用$request->header('user-agent')做轻量 UA 匹配(推荐用str_contains()检查Mobile、Android、iPhone) - 只对非
/m/开头的 GET 请求做跳转,排除 API、静态资源、后台路径 - 跳转目标用
url()助手生成,确保参数透传:return redirect()->to(url('m/article/read', ['id' => $id])); - 千万别在控制器里
redirect()—— 此时响应头已部分发送,可能触发headers already sent
移动端路由命名要带前缀,避免 url() 生成错乱
调用 url() 或 route() 生成链接时,框架靠路由名或路径模板反向匹配。如果 PC 和 Mobile 共用 article/:id 这种路径写法,url('article/read', ['id'=>123]) 就永远只能生成 PC 版本。
- 给移动端路由显式命名:
Route::get('m/article/<id>', 'mobile/Article@read')->name('m.article.read');</id> - PC 端对应写:
Route::get('article/<id>', 'pc/Article@read')->name('pc.article.read');</id> - 生成链接时明确指定:
url('m.article.read', ['id'=>123]),不会歧义 - 不命名、不加前缀的路由,
url()会按注册顺序匹配第一条符合路径结构的,极易出错
注意移动端 Cookie 和 Session 的隔离问题
同一域名下,PC 和 Mobile 共享 Cookie,但如果你在移动端中间件里做了登录态重定向,又没处理好 Session 存储策略,可能出现「手机端登了,PC 端也自动登了」或反之。
- 移动端登录后,建议用独立 Session key(如
mobile_user_id),别复用user_id - 检查
config/session.php中的name和domain配置,避免移动端请求携带 PC 的 Cookie - 若用 Redis 存 Session,可在 key 前加
m:前缀区分,通过自定义SessionHandler实现
最常被忽略的是:移动端路由一旦启用,所有前端链接、AJAX 接口、图片资源路径都得跟着变前缀或 Host,否则 404 是静默发生的——浏览器控制台不报错,只是请求发到了 PC 路由上被拒。务必用 url() 生成所有内部链接,别手写 /m/xxx。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










