Nginx中404頁面的配置及AJAX請求返回404頁面的方法_nginx

來源:互聯網
上載者:User

404頁面基礎配置
404錯誤是WWW網站訪問容易出現的錯誤。最常見的出錯提示:404 NOT FOUND。404錯誤頁的設定對網站SEO有很大的影響,而設定不當,比如直接轉跳首頁等,會被搜尋引擎降權拔毛。404頁面的目的應該是告訴使用者:你所請求的頁面是不存在的,同時引導使用者瀏覽網站其他頁面而不是關掉視窗離去。搜尋引擎通過HTTP狀態代碼來識別網頁的狀態。當搜尋引擎獲得了一個錯誤連結時,網站應該返回404狀態代碼,告訴搜尋引擎放棄對該連結的索引。而如果返回200或302狀態代碼,搜尋引擎就會為該連結建立索引,這導致大量不同的連結指向了相同的網頁內容。結果是,搜尋引擎對網站的信任度大幅降低。
下面是LNMP設定Nginx 404錯誤頁教程:
1、

vi /usr/local/nginx/conf/nginx.conf 

編輯Nginx設定檔,在http 區段添加下面代碼:

fastcgi_intercept_errors on;

2、編輯網站設定檔,比如本站:

vi /usr/local/nginx/conf/vhost/onelone.com.conf 

,在server 區段添加下面代碼:

error_page 404 = /404.html; 

注意:有網友測試上行代碼需要去掉等號才會返回正確的404狀態,所以請同學們自行測試是否要去掉等號。

3、測試組態檔案是否正確: 

/usr/local/nginx/sbin/nginx -t

,返回下面代碼通過:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is okconfiguration file /usr/local/nginx/conf/nginx.conf test is successful

4、重啟LNMP生效:/root/lnmp restart 。

5、404錯誤頁面製作的注意事項:
(1)不要將404錯誤轉向到網站首頁,否則可能會導致首頁在搜尋引擎中被降權或消失。   
(2)不要使用絕對URL,如果使用絕對URL返回的狀態代碼是302+200,這樣會產生大量的重複網頁。
(3)404版面設定完成,一定要檢查是否正確。http頭資訊返回的一定要是404狀態。這個可以通過伺服器頭部資訊檢查工具進行檢查。
(4)404頁面不要自動跳轉,讓使用者來決定去向。
自訂的404頁面必須大於512位元組,否則可能會出現IE預設的404頁面。

AJAX請求的404頁面返回
前幾天,一朋友出程式出問題卻怎麼查都沒看出問題,於是讓我幫它看看。其實它是ajax請求了很多個模板,然後把模板寫到頁面中。關鍵是所有請求的頁面都是200正常狀態代碼返回,表面上看沒什麼問題,實際上有些請求雖然返回200狀態代碼,但給回的狀態代碼是200。WebServer是nginx,直接告訴我應該他們配置了nginx的404錯誤頁面,雖然請求不存在的資源可以成功返回404頁面,但返回狀態代碼確是200。

404.htmlThis 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錯誤頁面優雅顯示的原因?
當我們訪問網站時,由於特殊的原因,經常會出現諸如403,404,503等錯誤,這極大的影響使用者的訪問體驗,所以我們很有必要做一下錯誤頁面的優雅顯示,以提升使用者的瀏覽體驗。

二.Nginx下如何定義優雅顯示的頁面呢?
下面我們就以404錯誤為例,具體步驟如下:
1.建立自己的404.html頁面,放在網站目錄下面;
2.更改nginx.conf設定檔,在http模組中加入 fastcgi_intercept_errors on;
3.更改nginx.conf設定檔,在server模組中加入:error_page 404 /404.html; 或者 error_page 404 =http://www.hulala.com/404.html;
4.更改後檢查文法/nginx/sbin/nginx -t ,並重啟nginx;
現在,404錯誤的頁面優雅顯示已經配置OK了。

舉一反三:502、403 等其他錯誤可以用同樣的方法來配置。
error_page 500 502 503 504 /50x.html;
error_page 403 /403.html;
注意:
在nginx中錯誤重新導向生效的兩個前提條件是:設定了fastcgi_intercept_errors on,並且正確的設定了error_page這個選項。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.