代码之家  ›  专栏  ›  技术社区  ›  Morgan

Laravel不显示HTTP状态403的自定义刀片视图

  •  0
  • Morgan  · 技术社区  · 6 年前

    根据拉维尔的 official docs ,您可以通过将所述视图添加到资源/视图/错误并命名文件[httpcode].Blade.php来显示给定HTTP响应的自定义Blade视图。我已经为404个错误完成了这个操作,每当遇到404个错误时,Laravel就会显示这个视图。但是,当遇到403错误时,Laravel会显示默认的丑陋的Apache 403“禁止”错误页面。

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <meta name="description" content="SQLess is a database management application.">
        <title>{{ $title }}</title>
        <link rel="stylesheet" href="{{ asset('css/bootstrap.min.css') }}">
        @stack('css-extras')
        @stack('scripts-extras')
    </head>
    <body>
    @yield('content')
    </body>
    </html>
    

    我的自定义403布局(403.blade.php):

    @extends('master', ['title' => "Forbidden"])
    @section('content')
        <div>You shouldn't be here. This is a 403 error!</div>
    @endsection
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   Hamoud    6 年前

    Laravel无法处理此403错误。在这种情况下,Laravel甚至不处理该请求。

    根据您的apache配置,如果存在与请求的URI匹配的现有文件或目录,则将为其提供服务。如果没有文件/目录,请求将被转发给Laravel处理。这是默认的Laravel配置,正如在Laravel中定义的那样 .htaccess 文件。

    在你的情况下,目录 img 存在于DocumentRoot中,由Apache提供服务。您看到403错误,因为目录没有 index 文件。

    因此,如果要自定义此403错误页,必须通过编辑Apache配置来完成。