提供由 PHP 生成的自定义 404 页面

Mat*_*oli 5 nginx php-fpm http-status-code-404

这是我的 php-fpm 配置:

location @site {
    fastcgi_pass   unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root/index.php;

    fastcgi_intercept_errors on;
    error_page 404 /404;
}
Run Code Online (Sandbox Code Playgroud)

因为fastcgi_intercept_errors已启用,当我的 PHP 路由器返回 404 时,Nginx 将重定向到/404.

但是由于/404是由我的PHP应用程序生成的,并且我的PHP应用程序正确设置了404响应代码,那么Nginx会再次尝试处理错误!(显然以循环结束)

这个问题有方法解决吗?

Mic*_*ton 5

nginx 这样做是因为您告诉它这样做。

    fastcgi_intercept_errors on;
Run Code Online (Sandbox Code Playgroud)

这意味着nginx 不会提供由 PHP 生成的错误响应,而是让 nginx 处理它们。这样你就进入了你的无限循环。

要解决此问题,请删除此指令(默认为off)或将其显式设置为off