Laravel将url从{id}重定向到{id}/{name}
我是一个全新的laravel框架,现在我正在使用laravel开发一个完整的网站。我已将博客url格式{id}更改为{id}/{name},如www.example.com/news/203更改为www.example.com/news/203/title。很好用。但若旧url进入从缓存打开的当前url或其他内容,我需要重定向Laravel将url从{id}重定向到{id}/{name},laravel,laravel-routing,Laravel,Laravel Routing,我是一个全新的laravel框架,现在我正在使用laravel开发一个完整的网站。我已将博客url格式{id}更改为{id}/{name},如www.example.com/news/203更改为www.example.com/news/203/title。很好用。但若旧url进入从缓存打开的当前url或其他内容,我需要重定向 Route::get('{id}/{name}', 'EventController@show') ->name('events-detai
Route::get('{id}/{name}', 'EventController@show')
->name('events-detail')
->where([
"id" => "[0-9]+"
]);
您可以定义另一个路由,在该路由中,您将按id查找模型,并使用其标题将用户重定向到新路由:
Route::get('{id}', function ($id) {
$model = Model::findOrFail($id);
return redirect()->route('events-detail', ['id' => $id, 'name' => $model->name]);
});
请注意,您必须使用用于此路由的类更改
模型。您可以定义另一个路由,在其中您将按id查找模型,并使用其标题将用户重定向到新路由:
Route::get('{id}', function ($id) {
$model = Model::findOrFail($id);
return redirect()->route('events-detail', ['id' => $id, 'name' => $model->name]);
});
请注意,您必须使用用于此路由的类更改模型。创建2条路由并添加以下代码
Route::get('{id}/{name}', function () {
//new URL as you want
return redirect()->route({id}/{name});
});
Route::get('{id}', function () {
//as you want for simple URL
});
创建2条路线并添加以下代码
Route::get('{id}/{name}', function () {
//new URL as you want
return redirect()->route({id}/{name});
});
Route::get('{id}', function () {
//as you want for simple URL
});
我假设除了SEO/更友好的URL之外,名称
部分根本没有被使用。如果是这种情况,只需选择name
参数,就不需要重定向:
Route::get('{id}/{name?}', 'EventController@show')
->name('events-detail')
->where([
"id" => "[0-9]+"
]);
此路由将匹配/203
和/203/news title
我假设名称
部分除了SEO/更友好的URL之外,根本没有使用。如果是这种情况,只需选择name
参数,就不需要重定向:
Route::get('{id}/{name?}', 'EventController@show')
->name('events-detail')
->where([
"id" => "[0-9]+"
]);
此路由将匹配/203
和/203/news title
是否有机会在“route::get(“{id}”)中写入重定向EventController@show')->name('events-detail')->其中([“id”=>“[0-9]+”]);'@SukumarChandran,它在控制器中与上面的一样。是否有机会在这个'Route::get('{id}','EventController@show')->name('events-detail')->其中([“id”=>“[0-9]+”]);'@SukumarChandran,它在控制器中与上面的一样。