我将旧项目转换为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);
});
但它不起作用,该网址无法识别。
答案 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