[英]Laravel route redirect without closure for route cache
我的routes.php
文件中有这段代码可以进行重定向。 虽然问题是每当我运行php artisan route:cache
命令时,它都会给我一个错误: Unable to prepare route [article/{params}] for serialization. Uses Closure.
Unable to prepare route [article/{params}] for serialization. Uses Closure.
我知道这与不允许在有闭包的情况下缓存的路由有关。 但是我该如何解决这个重定向问题呢?
Route::get('article/{params}', function($params) {
return Redirect::to($params, 301);
});
路由缓存不适用于基于闭包的路由。 要使用路由缓存,您必须将任何闭包路由转换为使用控制器类。
Route::get('article/{params}', 'HelperController@redirect');
在您的控制器中,您可以拥有如下所示的重定向功能:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelperController extends Controller
{
public function redirect($params)
{
return Redirect::to($params, 301);
}
}
似乎缓存路由现在也适用于闭包。
文档中的警告也从 Laravel 7 中消失了:
https://laravel.com/docs/7.x/controllers#route-caching
到 Laravel 8:
https://laravel.com/docs/8.x/routing#route-caching
在一个项目中也对其进行了测试,它没有抱怨。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.