Nginx的+ PHP(上FASTCGI)的伟大工程,为我。 当我输入的路径不存在,而不是获取默认的404错误页面(其中附带的任何无效.html文件),一个PHP文件,我只是得到一个“未指定输入文件。”
如何自定义此404错误页面?
Nginx的+ PHP(上FASTCGI)的伟大工程,为我。 当我输入的路径不存在,而不是获取默认的404错误页面(其中附带的任何无效.html文件),一个PHP文件,我只是得到一个“未指定输入文件。”
如何自定义此404错误页面?
您可以使用error_page财产Nginx的配置 。
例如,如果你打算设置的404错误页面/404.html
,使用
error_page 404 /404.html;
设置500错误页面/500.html
是一样容易:
error_page 500 /500.html;
您可以设置自定义错误页在您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在网络上的真实例子。
要注意语法! 大龟用他们互换,但是:
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
所述“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;
}
不再推荐使用这些答案,因为try_files
工作的速度比if
在这种情况下。 只需添加try_files
在你的PHP位置块来测试文件是否存在,否则返回404。
location ~ \.php {
try_files $uri =404;
...
}