在Laravel中获取上一页URL时赋值变量失效该如何解决?
问题原因
redirect()->back()->getTargetUrl()本身返回的是字符串格式的上一页地址,完全可以正常赋值给变量,你遇到的赋值后无法正常运行的问题,几乎都是两种常见错误导致的:
- 错误地将
redirect()->back()返回的RedirectResponse实例赋值给了变量,而非调用getTargetUrl()后的字符串结果,后续使用时直接操作了实例而非地址字符串 - 赋值后没有终止当前请求逻辑,后续代码执行了其他重定向操作、修改了session数据,覆盖了原有上一页地址的取值逻辑
解决办法
- 确保你是将
getTargetUrl()的返回结果赋值给变量,正确写法如下:
$prevUrl = redirect()->back()->getTargetUrl(); // 此时可以正常使用该变量,比如打印、存入数据库等 var_dump($prevUrl);
- 如果不需要生成重定向实例,更推荐直接使用Laravel原生的URL辅助方法获取上一页地址,逻辑更简洁稳定:
// 无需依赖重定向实例,直接获取上一页URL $prevUrl = url()->previous();
- 赋值后如果需要继续执行其他业务逻辑,避免在后续代码中调用任何跳转相关方法,也不要清空请求session,防止地址被覆盖。
内容的提问来源于stack exchange,提问作者Waleed
相关产品推荐
相关产品推荐

