Laravel将url从{id}重定向到{id}/{name}

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

我是一个全新的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-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,它在控制器中与上面的一样。