Nginx的 - 自定义404页(Nginx - Customizing 404 page)

2019-06-23 19:01发布

Nginx的+ PHP(上FASTCGI)的伟大工程,为我。 当我输入的路径不存在,而不是获取默认的404错误页面(其中附带的任何无效.html文件),一个PHP文件,我只是得到一个“未指定输入文件。”

如何自定义此404错误页面?

Answer 1:

您可以使用error_page财产Nginx的配置 。

例如,如果你打算设置的404错误页面/404.html ,使用

error_page 404 /404.html;

设置500错误页面/500.html是一样容易:

error_page 500 /500.html;


Answer 2:

您可以设置自定义错误页在您nginx.conf每个位置块,或对网站整体的全局错误页面。

重定向到特定位置的简单找不到404页:

location /my_blog {
    error_page    404 /blog_article_not_found.html;
}

站点宽404页:

server {
    listen 80;
    error_page  404  /website_page_not_found.html;
    ...

您可以附加标准错误代码一起有几种类型的错误单页:

location /my_blog {
    error_page 500 502 503 504 /server_error.html
}

重定向到一个完全不同的服务器,假设你已经在你的HTTP部分定义为上游服务器名为server2:

upstream server2 {
    server 10.0.0.1:80;
}
server {
    location /my_blog {
        error_page    404 @try_server2;
    }
    location @try_server2 {
        proxy_pass http://server2;
    }

该手册可以给你更多的细节,也可以搜索谷歌的条款nginx.conf和error_page在网络上的真实例子。



Answer 3:

要注意语法! 大龟用他们互换,但是:

error_page 404 = /404.html;

将与200状态码返回404.html页面(因为=未转述,此页)

error_page 404 /404.html;

将与(原)404错误代码返回404.html页面。

https://serverfault.com/questions/295789/nginx-return-correct-headers-with-custom-error-documents



Answer 4:

所述“error_page”参数使得重定向,转换所述请求方法“GET”,它不是定制响应页面。

最简单的方法是

     server{
         root /var/www/html;
         location ~ \.php {
            if (!-f $document_root/$fastcgi_script_name){
                return 404;
            }
            fastcgi_pass   127.0.0.1:9000;
            include fastcgi_params.default;
            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        }

顺便说一句,如果你想Nginx的处理由PHP脚本返回404种状态,你需要添加

[fastcgi_intercept_errors][1] on;

     location ~ \.php {
            #...
            error_page  404   404.html;
            fastcgi_intercept_errors on;
         }


Answer 5:

不再推荐使用这些答案,因为try_files工作的速度比if在这种情况下。 只需添加try_files在你的PHP位置块来测试文件是否存在,否则返回404。

location ~ \.php {
    try_files $uri =404;
    ...
}


文章来源: Nginx - Customizing 404 page