当路由以.php结尾时,Laravel不会抛出404

时间:2018-06-25 11:44:54

标签: php laravel nginx laravel-5.5 varnish

我将Laravel 5.5与NGINX 1.10.3和Varnish 5结合使用。

每次我键入一条不存在的路由时,laravel都会抛出404异常,并显示我的自定义resources/views/errors/404.blade.php

问题是,当我将.php附加到不存在的路由时,会得到一个

File not found.
来自NGINX的

消息。即使将404.blade.php附加到不存在的路线上,如何显示我的自定义.php

也许我应该重写清漆VCL以便切断尾随的.php,然后将请求传递给后端(NGINX)?

2 个答案:

答案 0 :(得分:1)

您的PHP脚本处理程序位置应如下所示,以实现所需的功能:

location ~ \.php$ {
    try_files  $uri /index.php =404;
    ...
}

try_files对于通过Laravel index.php处理程序(将执行其未发现的魔法)路由对不存在的.php脚本的请求至关重要。

答案 1 :(得分:0)

在您的 app / Exceptions / Handler.php

public function render($request, Exception $exception)
    {


        if($this->isHttpException($exception)){
                switch ($exception->getStatusCode()) {
                    case 400:
                        return redirect('/');
                    case 404:
                        return view('errors.404');  // your 404 error page
                        break;
                }
        } 
        return parent::render($request, $exception);
    }