当前位置: 首页 > 编程笔记 >

Nginx中定义404页面并且返回404状态码的正确方法

殷浩慨
2023-03-14
本文向大家介绍Nginx中定义404页面并且返回404状态码的正确方法,包括了Nginx中定义404页面并且返回404状态码的正确方法的使用技巧和注意事项,需要的朋友参考一下

前几天,一朋友出程序出问题却怎么查都没看出问题,于是让我帮它看看。其实它是ajax请求了很多个模板,然后把模板写到页面中。关键是所有请求的页面都是200正常状态码返回,表面上看没什么问题,实际上有些请求虽然返回200状态码,但给回的状态码是200。WebServer是nginx,直接告诉我应该他们配置了nginx的404错误页面,虽然请求不存在的资源可以成功返回404页面,但返回状态码确是200。

404.html


This is 404 page.


请求一个不存在的页面:

ajax Code:

$.ajax({
    url: "does_not_exist.html",
    success : function(Response, textStatus){
        console.log(textStatus+":"+Response);
    },
    error : function(XMLHttpRequest, textStatus, errorThrown){
        console.log([XMLHttpRequest, textStatus, errorThrown].join(","));
    }
});

执行结果:

进入Object看看详细:

找不到请求的页面并返回404页面信息,但状态码依然是200,所以jQuery没有走error函数回调而是直接走success回调了。

应该是配置写的有问题,于是打开nginx.conf,发现他们配置这么写:


error_page  404  =  /404.html;

于是我查阅官网文档,把上面的表达式改写为:


error_page  404     /404.html;

然后重启


D:\nginx-1.5.11>nginx.exe -s reload

再来试试:

再来看看ajax请求的:

明显看到相比前面那条返回标红404状态码,下面console.log出来的是


[object Object],error,Not Found

然后点击进入Object看看:

status值是404。既实现返回404页面,又能返回404状态码让ajax请求能够根据状态码判断页面请求状况进行错误处理。

(本文完)

 类似资料:
  • 本文向大家介绍Nginx中404页面的配置及AJAX请求返回404页面的方法,包括了Nginx中404页面的配置及AJAX请求返回404页面的方法的使用技巧和注意事项,需要的朋友参考一下 404页面基础配置 404错误是WWW网站访问容易出现的错误。最常见的出错提示:404 NOT FOUND。404错误页的设置对网站SEO有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛。404

  • 我在TYPO3 v10中为我的robots.txt使用静态文本路由(默认为. htaccess文件)。文本按预期传递,但标头中的StatusCode为404。我不知道如何解决这个问题,因为静态文本路由中没有设置状态代码的选项。 这是我的路线代码(如文档中所述:https://docs.typo3.org/m/typo3/reference-coreapi/10.4/en-us/ApiOvervie

  • 问题内容: 我一直在使用Golang测试Google App Engine SDK,但在投放静态html页面时遇到问题。如果我在under处理程序中添加了内容,那很好,但是当尝试从我的Go应用程序内部进行路由时;尝试网址时,页面返回404。 我的文件系统设置为: 我的主要样子是这样的: 问题答案: 您不应该使用Go处理程序来提供静态文件(除非您希望合并其他逻辑,例如高级日志记录或计数)。 您可以在

  • 问题内容: 我看到了一些类似的问题(像这样),但是没有一个问题专门解决这个问题。 因此,Google 现在支持SPA,并且大多数网络浏览器都支持HTML5 pushState 。 我的AngularJS(但可能是任何JS东西)网站都使用URL来确定API路由。然后执行API调用,然后相应地呈现内容。 但是,由于 每个URL都 返回HTTP 200状态代码(包括example.com/get-fre

  • 所以我有两个问题要做。首先,我试图了解NGINX,并将其用于重定向和一切;然而,如果我试图从php/html文件中删除扩展名,它只是下载文件。如果我用另一个东西只是尝试(没有文件扩展名尝试)它只给我404s。我不知道问题是什么,也不知道我做错了什么。 首先,我将显示我的删除php文件扩展名问题: 下面是我修复上述问题的另一个代码(但只给出了404) XXX。XX。XX。XX是我的ip服务器。 PS

  • 有时,在服务器级别,我会返回一些额外的信息以及 例如,它不会只返回一个,这可能会让我的客户困惑路由是否正确,它还会收到类似的消息 标识符“abc”未知 我通常将内容类型设置为,并在 另一种选择是设置。 哪种方式/惯例最好?设置或设置?