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

时间:2018-03-23 09:14:06

标签: laravel laravel-5.5 laravel-routing

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

old url:example.com/index.php?id={id}

new url:example.com/index/{slug}

我尝试使用类似的东西:

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

但它不起作用,该网址无法识别。

1 个答案:

答案 0 :(得分:3)

你要解决这个问题,你不需要一条路线,而是需要一个中间件。

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 Kernel