如果Laravel 5中不存在路由,则重定向到主页

时间:2015-04-06 20:47:34

标签: laravel-5 laravel-routing

/** Redirect 404's to home
*****************************************/
App::missing(function($exception)
{
    // return Response::view('errors.missing', array(), 404);
    return Redirect::to('/');
}); 

我在routes.php文件中有这个代码。我想知道如果有404错误,如何重定向回主页。这可能吗?

3 个答案:

答案 0 :(得分:58)

为此,你需要在app / Exceptions / Handler.php文件中添加几行代码来渲染方法,如下所示:

public function render($request, Exception $e)
    {
        if($this->isHttpException($e))
        {
            switch ($e->getStatusCode()) 
                {
                // not found
                case 404:
                return redirect()->guest('home');
                break;

                // internal error
                case '500':
                return redirect()->guest('home');
                break;

                default:
                    return $this->renderHttpException($e);
                break;
            }
        }
        else
        {
                return parent::render($request, $e);
        }
    }

答案 1 :(得分:2)

我只想添加一个清理它的建议。我想把接受的答案归功于让我开始。在我看来,因为这个函数中的每个动作都会返回一些东西,所以switch和else语句会产生一些膨胀。所以为了清理它,我做了以下几点。

 List<PackageInfo> packList = getPackageManager().getInstalledPackages(0);
            for (int i=0; i < packList.size(); i++)
            {
                PackageInfo packInfo = packList.get(i);
                if (  (packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0)
                {
                    String appName = packInfo.applicationInfo.loadLabel(getPackageManager()).toString();
                    ;
                    Log.e("App " + Integer.toString(i), appName +"  ver: "+packInfo.versionCode);
                }
            }

答案 2 :(得分:0)

您可以这样做:

open:app \ Exceptions \ Handler.php

在handler.php中,您可以替换以下代码:

return parent::render($request, $exception);

由此:return redirect('/');

非常有效 例如:

public function render($request, Exception $exception)
{
     return redirect('/');
    //return parent::render($request, $exception);
}