Laravel重定向旧链接

问题描述:

我遇到问题:需要将许多断开的链接重定向到新目标。目前,所有旧链接都指向默认的404页面,但这不是一个选项。Laravel重定向旧链接

我想创建一个控制器,我将在其中定义重定向规则。

不幸的是,我不知道如何捕捉所有断开的链接指向我的新控制器。

我已经提出了更正建议,但不幸的是,重定向后我得到错误500. $ redirect_url是正确的,我已经检查过它。

这是新型号功能:

public function redirect($url) { 

    $redirect_url = ''; 
    if(preg_match('!/bukmeikari/(.*)/(.*).html!isU', $url, $matches)) { 
     $redirect_url = str_replace('/bukmeikari/', '/bg/bukmeikari/', $url); 
    } 
    if($redirect_url != '') { 
     Redirect::to($redirect_url, 301); 
    } 
} 

,并在Handler.php:

public function render($request, Exception $e) 
{ 
    $rewrite_url = new RewriteUrl(); 
    $rewrite_url->redirect(request()->fullUrl()); 

    if($e instanceof NotFoundHttpException) { 
     return response()->view('errors.404', [], 404); 
    } 
    return parent::render($request, $e); 
} 

在此先感谢

+0

哪个laravel您正在使用? –

+0

我正在使用Laravel 5.2 –

您可以使用App\Exceptions\Handlerrender方法完成你的任务。

从文档:

render方法负责转换给定异常到 应被发送回浏览器的HTTP响应。默认情况下, 异常传递给基类,它会为您生成响应 。不过,你可以*地检查异常类型或返回 自己的自定义响应

Docs

+0

好吧,但我应该如何捕捉网址,我应该在哪里定义重定向规则?我有一个有规则的大名单,所以我希望它很清楚。 –

+0

您可以创建一个新的类并使用'render'方法调用它。为了捕获网址,你可以使用'request()'全局函数。 –

+0

可以帮我解决下一个问题:我得到错误500重定向 –