Laravel 路由重定向,无需关闭路由缓存

bas*_*abi 5 php routes laravel laravel-routing laravel-5.2

我的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);
});
Run Code Online (Sandbox Code Playgroud)

thi*_*sai 7

由于Laravel 5.5您可以使用:

Route::redirect('/here', '/there', 301);

请参阅重定向路由下的文档


Can*_*lik 4

路由缓存不适用于基于 Closure 的路由。要使用路由缓存,您必须将所有 Closure 路由转换为使用控制器类。

Route::get('article/{params}', 'HelperController@redirect');
Run Code Online (Sandbox Code Playgroud)

在您的控制器中,您可以使用重定向功能,如下所示:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelperController extends Controller
{
  public function redirect($params)
  {
    return Redirect::to($params, 301);
  }
}
Run Code Online (Sandbox Code Playgroud)