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

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

如果我去:

https://stackoverflow.com/questions/29092079

我被重定向到:

https://stackoverflow.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 看我的回答,它可能会给你一个想法

标签: laravel redirect laravel-5 routes


【解决方案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 方法的逻辑
猜你喜欢
  • 2016-05-15
  • 2017-02-17
  • 2019-05-06
  • 1970-01-01
  • 2017-09-20
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多