Nginx中定義404頁面并且返回404狀態(tài)碼的正確方法
前幾天,一朋友出程序出問題卻怎么查都沒看出問題,于是讓我?guī)退纯?。其實它是ajax請求了很多個模板,然后把模板寫到頁面中。關鍵是所有請求的頁面都是200正常狀態(tài)碼返回,表面上看沒什么問題,實際上有些請求雖然返回200狀態(tài)碼,但給回的狀態(tài)碼是200。WebServer是nginx,直接告訴我應該他們配置了nginx的404錯誤頁面,雖然請求不存在的資源可以成功返回404頁面,但返回狀態(tài)碼確是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(","));
}
});
執(zhí)行結果:

進入Object看看詳細:

找不到請求的頁面并返回404頁面信息,但狀態(tài)碼依然是200,所以jQuery沒有走error函數(shù)回調(diào)而是直接走success回調(diào)了。
應該是配置寫的有問題,于是打開nginx.conf,發(fā)現(xiàn)他們配置這么寫:
error_page 404 = /404.html;
于是我查閱官網(wǎng)文檔,把上面的表達式改寫為:
error_page 404 /404.html;
然后重啟
D:\nginx-1.5.11>nginx.exe -s reload
再來試試:

再來看看ajax請求的:

明顯看到相比前面那條返回標紅404狀態(tài)碼,下面console.log出來的是
[object Object],error,Not Found
然后點擊進入Object看看:

status值是404。既實現(xiàn)返回404頁面,又能返回404狀態(tài)碼讓ajax請求能夠根據(jù)狀態(tài)碼判斷頁面請求狀況進行錯誤處理。
(本文完)
相關文章
Nginx 只允許 www 域名訪問并禁止裸域名訪問的實現(xiàn)步驟
通過Nginx配置,可以設定僅允許www域名訪問,禁止或重定向裸域名,提升網(wǎng)站品牌統(tǒng)一性及用戶體驗,設置包括創(chuàng)建針對www的虛擬主機,禁止裸域名訪問,并可選進行裸域名到www的301重定向,完成后,重啟Nginx服務器使配置生效2024-10-10
基于nginx實現(xiàn)上游服務器動態(tài)自動上下線無需reload的實現(xiàn)方法
這篇文章主要介紹了基于nginx實現(xiàn)上游服務器動態(tài)自動上下線無需reload,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Nginx服務器下使用rewrite重寫url以實現(xiàn)偽靜態(tài)的示例
這篇文章主要介紹了Nginx服務器下使用rewrite重寫url以實現(xiàn)偽靜態(tài)的示例,這里舉了Discuz!和WordPress這兩個常用的PHP程序,需要的朋友可以參考下2015-12-12
詳解proxy_pass根據(jù)path路徑轉發(fā)時的"/"問題記錄
這篇文章主要介紹了詳解proxy_pass根據(jù)path路徑轉發(fā)時的"/"問題記錄,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
Nginx 根據(jù)URL帶的參數(shù)轉發(fā)的實現(xiàn)
這篇文章主要介紹了Nginx 根據(jù)URL帶的參數(shù)轉發(fā)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09

