Laravel控制器方法内redirect重定向不生效该如何解决
问题修复方案
- 变量名不匹配:调用
preg_match时匹配结果存到了$myMatches变量,但后续获取分组用的是$matches,变量名不一致导致无法拿到正确的路径参数,重定向目标无效。 - 未返回重定向响应:控制器必须将
redirect()方法的返回值作为方法的返回值返回,仅调用redirect()不返回的话,框架不会触发重定向操作,会继续执行后续逻辑。
修正后代码
protected function myMethod($mySlug) { if (preg_match('/myprefix\/(\w+)/', $mySlug, $myMatches)) { // 统一变量名,同时返回重定向响应 return redirect(myUrlHelper($myMatches[1]), 301); } // 匹配失败时返回对应响应,不要直接返回false,可根据业务调整 abort(404); }
如果修改后仍不生效,可以检查路由是否正确绑定了该方法,是否有全局中间件拦截了重定向响应。
内容的提问来源于stack exchange,提问作者tolga
相关产品推荐
相关产品推荐

