302狀態代碼與SEO
在SEO中,我們會經常碰需要將一些頁面轉移到URL,或者網站改版的時候,需要301或者302來幫忙處理這個過度階段。301、302跳轉代碼,在處理上,我們需要借助技術的幫助。因為這個處理,需要在服務器上進行設置。而且,我們在準備這么做的時候,我們必須要保證我們的處理方式是對的,如果出錯的話,導致的后果,可能會是很嚴重的。
HTTP狀態代碼中,用于重定向的是301和302.這兩個代碼指明了為滿足某個HTTP請求就必須被發出另一個請求---內容定位于其他地方。當一個網頁用這兩個代碼的任意一個作為響應時,它返回的不是任何HTML內容,而是包含了一個附加的HTTP報頭信息:Location,它指示另一個URL地址,在那里可以找到響應的內容。
302狀態代碼有一點模棱兩可的意思,302的意思是暫時地把內容轉移到一個新的URL,但是老的URL還沒有廢除。除非被報頭信息Cache-Control或Expires明確指定,否則客戶不會緩存結果。因為302也用于一些付費廣告的頁面,主要用于跳轉,但是在這里就不就這種方式做深入性探討。
302狀態的最大問題是在于,對搜索引擎而言,302狀態代碼的實際應用中,應該把302分為兩種。一種是內部頁面之間的跳轉,另外一種是站內頁面302到其他站頁面。
瀏覽器在解釋302重定向的時候總是遵循其定義---無論對于內部和外部都如此。然而,目前大部分的搜索引擎(包括Google和Yahoo!)只把它作為內部的302重定向來使用。這樣,對一個內部的302重定向,搜索引擎不好會緩存重定向的結果,并且將域名A繼續顯示在SERP中。這與定義是一致的。
外部的302重定向則復雜一些。Google的Matt Cutts說,大部分的情況是,Google將列出目標結果的結果,即域名B而不是域名A。這是與標準背離的,而Google這么的目的在于減少“302劫持”的攻擊。
302劫持是指,利用域名A上的一個頁面引用高質量更新內容的域名B。這樣,基于從域名B“偷來”的更新內容,這個頁面會有比較好的搜索引擎排名。并且利用偽裝(cloaking)方式,將用戶重定向到另一個頁面。這種行為如此盛行,以至于Google和Yahoo!都不得不在政策上做出調整。正如Matt Cutts所說,“大部分的情況是,Google轉向一組啟發式方法來返回目標頁面。為什么不是100%呢?幾乎所有的搜索引擎都保留了一點例外的權力。當我們認為源頁面對用戶更好時,才會這么做;當然那種情況很罕見。”
在實際應用中,比如動態網站中,無論如何都應該評估302狀態代碼是否真正必需。如果想把某個URL地址臨時存放不同的內容,最好是采用一種顯而易見的方法來改變內容。在實現上可以使用一個include(),或者遠程獲取并顯示替代內容,從一開始就防止對302狀態代碼的需要。