Laravel 当路由以 .php 结尾时不会抛出 404
Laravel does not throw 404 when route ends with .php
我将 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)?
在你的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);
}
您 PHP 脚本处理程序位置应该如下所示,以实现您想要的:
location ~ \.php$ {
try_files $uri /index.php =404;
...
}
try_files
在这里是必不可少的,它可以通过 Laravel index.php
处理程序路由对不存在的 .php 脚本的请求(它将执行未找到的魔法).
我将 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)?
在你的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);
}
您 PHP 脚本处理程序位置应该如下所示,以实现您想要的:
location ~ \.php$ {
try_files $uri /index.php =404;
...
}
try_files
在这里是必不可少的,它可以通过 Laravel index.php
处理程序路由对不存在的 .php 脚本的请求(它将执行未找到的魔法).