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



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

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

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

File not found.

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

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

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

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

try_files在这里对于通过 Laravelindex.php处理程序路由对不存在的.php脚本的请求至关重要(它将执行其未发现的魔力(。

在你的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);
}

最新更新