自定义error_page:Nginx给出404,PHP看到200

时间:2015-03-02 19:42:30

标签: nginx php http-status-code-404

我正在尝试设置自定义错误页面。应通过此页面路由任何错误代码(400-599)以显示错误和相应的状态代码。

这是我的服务器配置:

server {
    listen 80;
    server_name  mrcsmcln.dev;
    root /Users/mrcsmcln/Sites;
    index index.php index.html;

    error_page 404 /error.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;
    }   
}

接下来,我有error.php

$status_code = http_response_code();
// do stuff with $status_code here

现在,当我将浏览器指向mrcsmcln.dev/aoeuidhtns(不存在)时,Nginx会报告404,但$status_code200

我已尝试将error_page指令设置为error_page 404 = /error.php,但这只会让Nginx认为它也是200

为什么PHP会坚持认为状态代码是200,而不是正确的404

0 个答案:

没有答案