【问题标题】:Laravel 5 custom "Not Found" pageLaravel 5 自定义“未找到”页面
【发布时间】:2015-07-06 10:47:42
【问题描述】:

问题如下。

如何在 Laravel 5 中为不存在的页面设置默认路由?因此,当找不到页面时,会以状态 200 显示某些默认视图。

【问题讨论】:

    标签: laravel-5 laravel-routing middleware


    【解决方案1】:

    我认为对于不存在的页面,您应该使用状态码 404,但如果您想通过 200 ok,那么这应该可以正常工作。

    views >> errors 目录下创建一个文件404.blade.php 并将abort(200); 放入其中。

    更新 或者您可以将此代码放在文件app/Exceptions/Handler.php

    public function render($request, Exception $e)
    {
    
        // 404 page with status code 200
        if ($e instanceof ModelNotFoundException) {
            return response()->view('errors.404', [], 200);
        }
    
        return parent::render($request, $e);
    
    }
    

    注意:在views >> errors 目录创建文件404.blade.php 必须或传递另一个自定义视图。

    【讨论】:

      【解决方案2】:

      您可以通过创建名为 404.blade.php 的 Blade 模板并将其放置在 resources/views/errors 目录中来创建自定义 404 视图。

      但是,不要发送 200 OK HTTP 状态。这只是破坏了 HTTP 协议所代表的一切。

      【讨论】:

      • 有时我们需要非标准的解决方案。
      • @KenShiro 当它违反 HTTP 约定时不会。如果找不到页面,为什么要发送 200 OK 响应?
      • 无论请求什么用户,我们都需要始终显示单个页面。有时我们会为一些特殊要求添加自定义页面。
      • @KenShiro 您仍然可以显示相同的视图,但发送不同的 HTTP 状态。视图(或有关您的应用架构的任何内容)不应规定返回的 HTTP 状态代码。如果用户不存在,则发送 404。您仍然可以看到漂亮的视图。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多