我正在尝试在 PHP 中实现自定义 nginx 错误页面,但似乎我的错误处理程序总是显示 200,而不是实际生成的状态(例如,如果我输入无效链接,则显示 404)。这是我的 error_page 指令:
error_page 400 401 402 403 404 410 418 500 502 503 504 505 /scrnus.php;
location = /scrnus.php {
root /var/www/error_pages;
internal;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass scrnus-php;
}
预期结果: 预期结果
实际结果: 实际结果
任何帮助,将不胜感激。
答案1
最终通过将状态作为 GET 变量传递给我的脚本来解决了该问题:
error_page 400 401 402 403 404 410 418 500 502 503 504 505 /scrnus.php?error=$status;
虽然这不是最好的方法,但是它可以起作用并且对用户是不可见的。