我正在开展一个项目,并且在登录后我正在努力重定向到预定的位置 . 问题是Laravel不包括Vues路线(#/ ......之后的任何东西)所以它总是将我重定向到'domain.com/'
我正在使用laravel路由仅用于'登录''注销'和'/',而应用程序的其余部分是使用vue路由的单页 .
该应用的用户在需要采取措施时会收到通知电子邮件 . 这些电子邮件包含指向需要其操作的请求的链接(例如domain.com/#/request/3413) . 当然,他们需要登录才能访问,以便通过laravel将其重定向到登录页面(domain.com/login#/request/3413)
成功登录后,我试图重定向它们
return redirect()->intended('/');
但它将它们重定向到“domain.com/”而不是“domain.com/#/request/3413”
有没有办法让laravel在重定向中包含vues路由?
非常感谢!
2 回答
所以经过一些令人难以忍受的研究后,我发现#之后的所有内容都是由浏览器处理的,这意味着服务器没有看到它,所以你无法在PHP代码中访问它 . 我发现感谢这个帖子:Getting FULL URL with #tag
我不确定请求的那部分是否甚至没有发送到服务器,但它似乎是这样,甚至对我来说也是如此合乎逻辑 .
所以为了解决这个问题,我通过电子邮件将发送给用户的链接改为这样的
这样我就可以在我的PHP代码中访问它,并在成功登录后将重定向链接放在一起 .
您可以通过启用History Mode来删除Vue路由器中URL中的#:
您需要将所有请求定向到应用程序所在的位置 . 如果你的后端是Laravel,你可以在routes / web.php文件中定义一个catch-all路由
需要注意的是,服务器将不再为未找到的路径返回404,因此如果找不到路径,则必须创建NotFoundComponent以显示在Vue应用程序上 .
阅读Vue Router History Mode Documentation了解更多信息