如何自定义 404 错误页面 (ubuntu nginx)
How to customize a 404 error page (ubuntu nginx)
我目前正在建立自己的网站,其中一个 运行 就是丑陋的 404 错误页面。我正在 运行 在 Ubuntu 上设置一个 LEMP 堆栈,所以我的默认错误页面是一个 nginx 页面。不用说,我不喜欢默认错误页面的外观,并且想更改它。我已经看到了如何执行此操作的各种方法,但其中很多都涉及 Apache(可能相同)、.htaccess 等。
不过,我相信一定有更简单的方法来做到这一点。 404 页面不就是我们应该能够编辑的简单 .html 页面吗?如何在不使用其他人的情况下以最简单的方式编辑默认 404 页面?
答案是肯定的,有一种简单的方法可以将 404 页面自定义为 HTML 文件,至少在 LEMP 堆栈上是这样。假设您没有重新组织 "too many" 个文件,唯一需要做的就是创建一个文件。
解释:
如果您转到 /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
- "root-relative" 文件路径,包括文件名。
- 如果您的根与上面的不同,您将需要更改此文件路径以反映差异(如上所述)。
但是,如果您转到上面的路径,您会注意到目录中没有该名称的文件。因此,将显示默认的 nginx 错误页面。
要更改此设置,只需制作一个自定义 HTML 页面作为您的 404 错误页面,并将其作为“404.html”保存在您的根目录中。然后,上述路径(error_page 404 /404.html;
)在出现404错误时将能够显示您的自定义页面。
我相当确定您可以为您可能希望涵盖的任何其他 HTTP 错误代码添加必要的 "error_page" 行,或者将多个错误代码路由到相同的通用错误页面(但我没有尝试过这个)。另外,我相当确定其他服务器类型的设置是相同的,但同样,我还没有尝试过。
如果这不正确(或可以做得更好),或者这是否会导致以后出现意外问题,请告诉我。
我目前正在建立自己的网站,其中一个 运行 就是丑陋的 404 错误页面。我正在 运行 在 Ubuntu 上设置一个 LEMP 堆栈,所以我的默认错误页面是一个 nginx 页面。不用说,我不喜欢默认错误页面的外观,并且想更改它。我已经看到了如何执行此操作的各种方法,但其中很多都涉及 Apache(可能相同)、.htaccess 等。
不过,我相信一定有更简单的方法来做到这一点。 404 页面不就是我们应该能够编辑的简单 .html 页面吗?如何在不使用其他人的情况下以最简单的方式编辑默认 404 页面?
答案是肯定的,有一种简单的方法可以将 404 页面自定义为 HTML 文件,至少在 LEMP 堆栈上是这样。假设您没有重新组织 "too many" 个文件,唯一需要做的就是创建一个文件。
解释:
如果您转到 /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
- "root-relative" 文件路径,包括文件名。- 如果您的根与上面的不同,您将需要更改此文件路径以反映差异(如上所述)。
但是,如果您转到上面的路径,您会注意到目录中没有该名称的文件。因此,将显示默认的 nginx 错误页面。
要更改此设置,只需制作一个自定义 HTML 页面作为您的 404 错误页面,并将其作为“404.html”保存在您的根目录中。然后,上述路径(error_page 404 /404.html;
)在出现404错误时将能够显示您的自定义页面。
我相当确定您可以为您可能希望涵盖的任何其他 HTTP 错误代码添加必要的 "error_page" 行,或者将多个错误代码路由到相同的通用错误页面(但我没有尝试过这个)。另外,我相当确定其他服务器类型的设置是相同的,但同样,我还没有尝试过。
如果这不正确(或可以做得更好),或者这是否会导致以后出现意外问题,请告诉我。