如何自定义404错误页面(ubuntu nginx)

时间:2015-05-29 18:17:45

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

我目前正在建立自己的网站,我遇到的一件事就是丑陋的404错误页面。我在Ubuntu上运行LEMP堆栈,所以我的默认错误页面是一个nginx页面。不用说,我不喜欢默认错误页面的外观,并且想要更改它。我已经看到了各种方法,但是很多方法都与Apache(可能是相同的),.htaccess等有关。

但是,我确信必须有一种更简单的方法来做到这一点。 404页面只是一个我们应该能够编辑的简单.html页面吗?如何在不使用其他人的情况下以最简单的方式编辑默认的404页面?

1 个答案:

答案 0 :(得分:0)

答案是肯定的,有一种简单的方法可以将404页面自定义为HTML文件,至少在LEMP堆栈上是这样。假设你没有重新组织太多"文件,唯一需要做的就是创建一个文件。

<强>解释
如果你转到/etc/nginx/sites-available/default.conf并打开它,你会注意到一个类似于这个的块:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost unaviamedia.ca;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html; 
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    .......

}

声明:
从这一行可以看出:root /usr/share/nginx/html;,我的主目录是&#34; /usr/share/nginx/html。&#34;如果您的不同,则需要更改我提到的下一个文件路径。

请注意这一行:error_page 404 /404.html;,在页面中间?这是您网站的404 HTML错误页面的路径。

<强>解释

  • error_page - 指定此行与HTTP错误页面相关。
  • 404 - 此页面将响应的特定HTTP错误代码。
  • /404.html - &#34; root-relative&#34;文件的路径,包含文件名。
    • 如果你的根与上面的根不同,则需要更改此文件路径以反映差异(如上所述)。

但是,如果你转到上面的路径,你会发现目录中没有该名称的文件。因此,将显示默认的nginx错误页面。

要更改此设置,只需创建一个自定义HTML页面,该页面将成为您的404错误页面,并将其保存在根目录中作为&#34; 404.html。&#34;然后,上述路径(error_page 404 /404.html;)将能够在发生404错误时显示您的自定义页面。

我相当肯定你可以添加必要的&#34; error_page&#34;您可能希望覆盖的任何其他HTTP错误代码的行,或将几个路由到同一个通用错误页面(但我没有尝试过)。另外,我非常确定其他服务器类型的设置是相同的,但我再次尝试过这个。

如果这不正确(或者可以做得更好),请告诉我,或者如果这可能会导致更远的意外问题。