簡體   English   中英

Laravel 路由重定向,無需關閉路由緩存

[英]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);
});

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

在一個項目中也對其進行了測試,它沒有抱怨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM