我试图让Laravel回复自定义403错误,而不是显示默认的nginx禁止页面。
我在#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "+5000,-9000,7jj4";
// We'll use this to allocate pointers.
//
char **tokens = NULL;
int totalTokens = 0;
// Returns first token
char *token = strtok(str, ",");
// Keep printing tokens while one of the
// delimiters present in str[].
while (token != NULL)
{
printf("%s\n", token);
token = strtok(NULL, "-");
// Allocate first/next pointer
//
if (! tokens) {
tokens = malloc(sizeof(char *));
if (! tokens) {
// Handle malloc() error...
//
}
} else {
// Allocate next pointer
//
tokens = realloc(tokens, (sizeof(char *) * totalTokens);
if (! tokens) {
// Handle realloc() error.
//
}
}
// Use the newly allocates pointer to malloc() a buffer
//
tokens[totalTokens] = malloc(sizeof(char) * (strlen(token) + 1));
if (! tokens[totalTokens]) {
// Handle malloc() error.
//
}
// Store token and next
//
strcpy(tokens[totalTokens++], token);
}
return 0;
}
中有大多数异常类型的自定义处理程序,它们工作得很好,403除外。我将以下代码添加到app/Exceptions/Handler.php
函数中的Handler.php file
处理403:
render
但如果我导航到http://myapp.com/images/
,我仍然会看到默认的nginx禁止页面此时我相当肯定这是一个我可能缺少的nginx配置,但我不是100%确定什么,在搜索网络后似乎无法找到解决方案。
由于
答案 0 :(得分:1)
感谢大家的建议和评论,我能够找到并解决造成问题的原因。正如Elias Soares在评论中提到的那样,问题显然是在Laravel到达之前发生的。我进入了我的nginx配置文件并注意到以下行:
error_page 404 /index.php;
由于Laravel确实正确处理了404错误,我只是简单地为403添加了相同的东西:
error_page 403 /index.php;
现在Laravel正在以我希望的方式处理任何403错误。
谢谢!
答案 1 :(得分:-1)
你不需要做任何特别的事情。
只需在resources/views/errors/
下创建403.blade.php就可以了。