在“通過http狀態(tài)碼查看搜索引擎蜘蛛如何爬行你的網(wǎng)站”一文中,我介紹了一些經(jīng)常涉及到的http狀態(tài)碼及含義,譬如大家經(jīng)常探討并且與本文相關(guān)的http狀態(tài)碼:
404:服務(wù)器找不到指定的資源,請求的網(wǎng)頁不存在(譬如瀏覽器請求的網(wǎng)頁被刪除或者移位,但不排除日后該鏈接有效的可能性);
410:請求的網(wǎng)頁不存在(注意:410表示永久性,而404表示臨時性);
200:服務(wù)器成功返回請求的網(wǎng)頁;
301:網(wǎng)址永久性重定向
302:網(wǎng)址臨時性重定向
注意:大部分搜索引擎將“404”與“410”狀態(tài)同等對待,如google。(參見matt cutts的說明)
對http404狀態(tài)碼的理解
http 404 錯誤意味著鏈接指向的網(wǎng)頁不存在,即原始網(wǎng)頁的url失效,這種情況經(jīng)常會發(fā)生,很難避免,比如說:網(wǎng)頁url生成規(guī)則改變、網(wǎng)頁文件更名或移動位置、導入鏈接拼寫錯誤等,導致原來的url地址無法訪問;當web 服務(wù)器接到類似請求時,會返回一個404 狀態(tài)碼,告訴瀏覽器要請求的資源并不存在。但是,web服務(wù)器默認的404錯誤頁面,無論apache還是iis,均十分簡陋、呆板且對用戶不友好,無法給用戶提供必要的信息以獲取更多線索,無疑這會造成用戶的流失。
因此,很多網(wǎng)站均使用自定義404錯誤的方式以提供用戶體驗避免用戶流失。一般而言,自定義404頁面通用的做法是在頁面中放置網(wǎng)站快速導航鏈接、搜索框以及網(wǎng)站提供的特色服務(wù),這樣可以有效的幫助用戶訪問站點并獲取需要的信息。
http404對seo的影響
自定義404錯誤頁面是提供用戶體驗的很好的做法,但在應用過程中往往并未注意到對搜索引擎的影響,譬如:錯誤的服務(wù)器端配置導致返回“200”狀態(tài)碼或自定義404錯誤頁面使用meta refresh導致返回“302”狀態(tài)碼。正確設(shè)置的自定義404錯誤頁面,不僅應當能夠正確地顯示,同時,應該返回“404”錯誤代碼,而不是“200”或“302”。雖然對訪問的用戶而言,http狀態(tài)碼究竟是“404”還是“200”來說并沒有什么區(qū)別,但對搜索引擎而言,這則是相當重要的。
(一)自定義404錯誤頁返回“200”狀態(tài)碼
當搜索引擎蜘蛛在請求某個url時得到“404”狀態(tài)回應時,即知道該url已經(jīng)失效,便不再索引該網(wǎng)頁,并向數(shù)據(jù)中心反饋將該url表示的網(wǎng)頁從索引數(shù)據(jù)庫中刪除,當然,刪除過程有可能需要很長時間;而當搜索引擎得到“200”狀態(tài)回應時,則會認為該url是有效的,便會去索引,并會將其收錄到索引數(shù)據(jù)庫,這樣的結(jié)果便是這兩個不同的url具有完全相同的內(nèi)容:自定義404錯誤頁面的內(nèi)容,這會導致出現(xiàn)復制網(wǎng)頁問題。對搜索引擎而言,特別是google,不但很難獲得信任指數(shù)trustrank,也會大大降低google對網(wǎng)站質(zhì)量的評定。(為什么會出現(xiàn)返回“200”狀態(tài)碼的情況??請參看下面內(nèi)容“自定義404錯誤頁面的基本原則”)
我一直在使用google sitemap,當我們提交xml格式網(wǎng)站地圖文件時,google會驗證我們的身份以確保是網(wǎng)站合法的管理者。驗證方式有兩種:上傳指定名稱的html頁到網(wǎng)站根目錄或者在網(wǎng)頁meta區(qū)域添加一個標識身份的meta標簽。我通常是使用上傳html網(wǎng)頁的方式,但google卻提示我網(wǎng)站根目錄下找不到這個網(wǎng)頁(實際上我已上傳,并且通過瀏覽器可以訪問),這是一個很可怕的問題。
(二)自定義404錯誤頁使用meta refresh返回“302”狀態(tài)碼
常常看到許多網(wǎng)站的自定義404錯誤頁面采取類似這樣的形式:首先顯示一段錯誤信息,然后,通過meta refresh將頁面跳轉(zhuǎn)到網(wǎng)站首頁、網(wǎng)頁地圖或其他類似頁。根據(jù)具體實現(xiàn)方式不同,這類404頁面可能返回“200”狀態(tài)碼,也可能返回“302”,但不論哪種,從seo技術(shù)角度看,均不是一種合適的選擇。
對“200”狀態(tài)的情況我們上面已經(jīng)談過,那么,當404頁面返回“302”時,搜索引擎會怎么對待呢?從理論上說,對“302”錯誤,搜索引擎認為該網(wǎng)頁是存在的,只不過臨時改變了地址,仍然會索引收錄該頁,這樣,同樣會出現(xiàn)類似于“200”狀態(tài)碼時的重復文本問題;其次,以google為代表的主流搜索引擎對302重定向的適用范圍要求越來越嚴格,這類不當使用302重定向的情況存在很大的風險。
確保自定義404錯誤頁面能夠返回“404”狀態(tài)碼
在自定義404錯誤頁面設(shè)置完畢后,一定要檢查一下其是不是能夠正確地返回“404”狀態(tài)碼。可以使用server header檢查工具,輸入一個不存在網(wǎng)頁的url,查看一下http header的返回情況,確信其返回的是“404 not found”。
404錯誤的處理方式
(一)定制404錯誤頁面的基本原則
首先應明確的是,404錯誤應工作在服務(wù)器級而不是網(wǎng)頁級。對定制使用動態(tài)頁面如php腳本類型的404頁時,必須確保在php執(zhí)行前服務(wù)器已經(jīng)順利地送出“404”狀態(tài)碼,不然,一旦執(zhí)行到了isapi級別,返回的狀態(tài)碼便只能是“200”或其他如“302”之類的重定向狀態(tài)碼了。
其次,在自定義網(wǎng)站的404錯誤頁面時,對設(shè)置的錯誤頁面url鏈接應使用相對路徑而不是絕對路徑,而且自定義404頁面應該放在網(wǎng)站根目錄下。盡管無效鏈接可能是多種形式的url,但當發(fā)生404訪問錯誤時,web服務(wù)器會自動將其轉(zhuǎn)到自定義的當404錯誤頁中,這跟url的形似沒有關(guān)系。
(二)apache下設(shè)置404錯誤頁面
為apache server設(shè)置 404錯誤頁面的方法很簡單,只需在.htaccess 文件中加入如下內(nèi)容即可:errordocument 404 /notfound.php
注意:
1.切記不要將404錯誤轉(zhuǎn)向到網(wǎng)站主頁,否則可能會導致主頁在搜索引擎中消失
2.切記不要使用絕對url(例如:http://m.survivalescaperooms.com/nofound.php形式),如果使用絕對url返回的狀態(tài)碼是“302”+“200”(已測試)
(三)iis/asp.net下設(shè)置404錯誤頁面
首先,修改應用程序根目錄的設(shè)置,打開 “web.config” 文件編輯,在其中加入如下內(nèi)容:
注:上文例中“error.asp”為系統(tǒng)默認的404頁面,“notfound.asp”為自定義的404頁面,使用時請修改相應文件名。
然后,在自定義的404頁面“notfound.asp”中加入:
這樣,便可以保證iis能夠正確地返回“404”狀態(tài)碼
(四)在iis/asp.net下設(shè)置404靜態(tài)頁面
設(shè)置靜態(tài)404錯誤頁面的方法則比較簡單,在iis管理器中右鍵單擊要管理的網(wǎng)站,打開“屬性”中的“自定義錯誤信息”頁,為“404”設(shè)定相應的錯誤信息頁即可。不過,此處在“消息類型”中一定要選擇“文件”或“默認值”,而不要選擇“url”,不然,將導致返回“200”狀態(tài)碼。
新聞熱點
疑難解答
圖片精選