我的routes.php
文件上有这个代码,可以进行重定向。虽然问题是每当我运行php artisan route:cache
命令时,它都会给我一个错误Unable to prepare route [article/{params}] for serialization. Uses Closure.
我知道这与路由有关,如果它有关闭,则不允许缓存它。但是我如何为此重定向制定解决方法?
Route::get('article/{params}', function($params) {
return Redirect::to($params, 301);
});
自Laravel 5.5
以来,您可以使用:
Route::redirect('/here', '/there', 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
在一个项目中也对其进行了测试,它不会抱怨。