【发布时间】:2018-09-12 22:51:17
【问题描述】:
Laravel 5.5 中引入的新的Route::redirect 很实用,但是它允许{any} 通配符吗?
这是我过去在 Laravel 5.4 中所做的事情
Route::get('slug', function () {
return redirect('new-slug', 301);
});
在 Laravel 5.5 中,我可以执行以下操作:
Route::redirect('slug', url('new-slug'), 301);
这允许通过摆脱闭包来缓存路由。
到目前为止一切顺利,但是如果我想使用通配符怎么办?在 Laravel 5.4 中,我可以这样做:
Route::get('slug/{any}', function ($any) {
return redirect('new-slug/'.$any, 301);
});
当然,我仍然可以在 Laravel 5.5 中使用它,但我的重点是能够缓存我的路由文件。
新的Route::redirect 是否允许使用通配符,或者是我使用控制器的唯一选择?
编辑:我正在尝试做的是这样的事情:
Route::redirect('slug/{any}', url('new-slug/'.$any), 301);
这当然行不通,因为我不知道在哪里引用 $any 变量。
【问题讨论】:
-
我刚刚测试过,它可以工作(虽然是 5.6),所以我认为 5.5 也不会成为问题。编辑:5.5 也有效
-
@Indra 我已经更新了我的问题,向您展示我想要做什么
-
你的意思是
artisan route:cache?是的,它仍然可以工作 -
@ThomasEdwards 它确实有效,但我的问题是关于在 Laravel 5.5+ 中使用带有通配符的
Route::redirect。Route::redirect('slug/{any}', url('new-slug/'.$any), 301);不起作用,因为$any没有在任何地方指定。 -
我认为它会起作用。尝试检查此 PR github.com/laravel/ideas/issues/654
标签: laravel laravel-5.5 laravel-routing