【问题标题】:Allow Laravel to respond to 403 instead of nginx允许 Laravel 响应 403 而不是 nginx
【发布时间】:2016-09-24 01:46:56
【问题描述】:

我试图让 Laravel 响应自定义 403 错误,而不是显示默认的 nginx 禁止页面。

我在app/Exceptions/Handler.php 中为我的大多数异常类型提供了自定义处理程序,它们工作得很好,除了 403。我将以下代码添加到 render 函数中的 Handler.php file 以处理 403:

if($e instanceof HttpException && $e->getStatusCode() == 403){
        return response("403 Forbidden error response");
    }

但如果我说导航到http://myapp.com/images/,我仍然只能看到默认的 nginx 禁止页面

在这一点上,我相当确定这是我可能缺少的 nginx 配置,但我不能 100% 确定是什么,并且在搜索网络后似乎找不到解决方案。

谢谢

【问题讨论】:

  • 是什么阻止了用户访问/images?如果是 nginx 配置中的服务器阻塞,您将无法更改 laravel 上的响应,因为它会在调用 Laravel 之前阻塞。
  • edit 包含您的 nginx 配置。

标签: php laravel nginx laravel-5


【解决方案1】:

感谢大家的建议和评论,我已经能够找到并解决导致问题的原因。正如 Elias Soares 在上面的评论中提到的那样,这个问题显然在 Laravel 出现之前就已经发生了。我进入我的 nginx 配置文件并注意到以下行:

error_page 404 /index.php;

由于 Laravel 确实正确处理了 404 错误,我只是为 403 添加了完全相同的内容:

error_page 403 /index.php;

现在 Laravel 正在按照我希望的方式处理任何 403 错误。

谢谢!

【讨论】:

    【解决方案2】:

    您不必做任何特别的事情。

    只需在resources/views/errors/ 下创建 403.blade.php 就可以了。

    https://laravel.com/docs/5.3/errors#custom-http-error-pages

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-04
      • 2019-12-15
      • 2021-12-28
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多