将路由从 index.php?id={id} 重定向到 /index/{slug}

Redirect route from index.php?id={id} to /index/{slug}

我将一个旧项目转换为 laravel,我想创建一些 301 路由来重定向旧的 url。

旧url: 例子.com/index.php?id={id}

新url:示例。com/index/{slug}

我尝试使用类似的东西:

Route::get('index.php?id={id}', function($id){
    $slug = {where I select slug from id}
    return Redirect::to('/index/'.$slug, 301);
});

但是没用,无法识别url。

你的做法有点不对,你不需要路由,而是一个中间件。

php artisan make:middleware Redirect

public function handle( $request, Closure $next )
{
    if( preg_match( '#index.php\?id=(\d+)#is', $request->fullurl(), $matches ) ) {
        return redirect()->to( "/index/{$matches[1]}", 301 );
    }
    return $next( $request );
}

将中间件添加到 Http 内核