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

kgsdhlau  于 2022-11-02  发布在  Nginx
关注(0)|答案(2)|浏览(155)

我目前正在建立自己的网站,其中一个问题是我遇到了一个丑陋的404错误页面。我在Ubuntu上运行了一个LEMP堆栈,所以我的默认错误页面是一个nginx页面。不用说,我不喜欢默认错误页面的样子,我想改变它。我已经看到了各种各样的方法来做到这一点,但其中很多都是处理Apache(可能是相同的)、.htaccess等。
但是,我相信一定有一个更简单的方法来做到这一点。404页面不只是一个简单的.html页面,我们应该能够编辑吗?我怎样才能编辑默认的404页面在最简单的方式可能不使用别人的?

xyhw6mcr

xyhw6mcr1#

答案是肯定的,有一个简单的方法可以将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;,我的主目录是“/usr/share/nginx/html”。如果您的主目录不同,您需要更改我提到的下一个文件路径。*
请注意这一行:error_page 404 /404.html;,页面中间?这是指向您网站的404 HTML错误页面的路径。

说明:

  • error_page-指定此行与HTTP错误页面相关。
  • 404-此页面将响应的特定HTTP错误代码。
  • /404.html-文件的“根目录相对”路径,包括文件名。
    • 如果您的根目录与上面的根目录不同,则需要更改此文件路径以反映差异(如上所述)。*
      但是,如果你转到上面的路径,你会注意到目录中没有这个名字的文件。因此,会显示默认的nginx错误页面。

要改变这一点,只需创建一个自定义HTML页面,将其作为404错误页面,并将其保存在根目录下,命名为“404.html”。然后,当404错误发生时,上述路径(error_page 404 /404.html;)将能够显示您的自定义页面。
我很确定您可以为任何其他HTTP错误代码添加必要的“error_page”行,或者将几个错误代码路由到同一个通用错误页面(但我还没有尝试过)。另外,我很确定其他服务器类型的设置也是一样的,但同样,我还没有尝试过。
请让我知道这是不正确的(或可以做得更好),或如果这可能会导致意外的问题更远的道路。

wlsrxk51

wlsrxk512#

打开/etc/nginx/nginx.conf文件或相应的/etc/nginx/sites-enabled .conf文件,并在server { ... }部分添加:

error_page 404 /404.html;
location = /404.html {
    root /path/to/existing/folder;
}

然后打开/path/to/existing/folder/404.html并在其中粘贴:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
404 Not found.
</body>
</html>

和应用更改:sudo systemctl reload nginx

相关问题