Laravel 中的自动重定向

Posted

技术标签:

【中文标题】Laravel 中的自动重定向【英文标题】:Auto redirect in Laravel 【发布时间】:2018-09-17 21:34:02 【问题描述】:

作为一个简单的例子,我想在问题 URL 重定向方面做与 *** 相同的事情。这是一个例子:

如果我去:

https://***.com/questions/29092079

我被重定向到:

https://***.com/questions/29092079/what-exactly-is-laravel

我想复制这个。

我的routes/web.php 条目是:Route::get('blog/id/slug', 'BlogController@show');

这按它所说的方式工作,但如果我在没有slug 的情况下导航,它不会重定向。

实现这一点的最佳方法是在控制器中设置重定向吗?

Laravel 版本:5.5

【问题讨论】:

将 slug 设为可选,并检查控制器是否为空。 对不起@Ali,我认为你误解了我想要实现的目标。如果原始请求中不存在,我想 301 重定向到包含 slug 的 URL 然后为该逻辑创建一个新方法和 url @Sohel0415 你似乎一针见血。你能在正确的道路上指导我回答吗? @Wildcard27 看我的回答,它可能会给你一个想法 【参考方案1】:

首先制作tworoutes

Route::get('blog/blog', 'BlogController@redirectWithSlug');
Route::get('blog/id/slug', 'BlogController@show');

在你的BlogController

public function redirectWithSlug(Blog $blog)

    return redirect('blog/'.$blog_id.'/'.$blog->slug);

【讨论】:

谢谢!有没有办法用资源控制器做到这一点? 是的,你可以用这个逻辑改变你的 show 方法的逻辑

以上是关于Laravel 中的自动重定向的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 如何测试重定向

在 laravel 5.4 自动重定向到 404 页面

Laravel 在身份验证异常时自动重定向

Laravel 路由问题:自动重定向到根文件夹

Laravel如何在自动重定向验证后发送参数以查看

重定向回 Laravel 中的相同位置