我是laravel框架的新手,现在我正在使用Laravel开发完全开发的网站。我已将博客网址格式从{id}更改为{id} / {name},例如将www.example.com/news/203更改为www.example.com/news/203/title。一切正常。但是如果旧网址输入从缓存或其他内容打开的当前网址,我需要重定向。
Route::get('{id}/{name}', 'EventController@show')
->name('events-detail')
->where([
"id" => "[0-9]+"
]);
答案 0 :(得分:1)
您可以定义另一条路线,通过该路线您可以通过id查找模型,并使用其标题将用户重定向到新路线:
Route::get('{id}', function ($id) {
$model = Model::findOrFail($id);
return redirect()->route('events-detail', ['id' => $id, 'name' => $model->name]);
});
请注意,您必须将Model
更改为用于此路由的类。
答案 1 :(得分:1)
创建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 :(得分:0)
我假设{SEO /更友好的URL之外,根本没有使用name
部分。如果是这种情况,只需将name
参数设为可选,就无需重定向:
Route::get('{id}/{name?}', 'EventController@show')
->name('events-detail')
->where([
"id" => "[0-9]+"
]);
此路线将匹配/203
和/203/news-title
。