1. 程式人生 > >網頁常用的301重定向和302重定向的實現方法

網頁常用的301重定向和302重定向的實現方法

 重定向說白了就是通過各種的方法將各種網路請求重新定個方向轉到其它位置。

  如:網頁中的重定向

  域名的重定向

  路由選擇的變化也是對資料報文經由路徑的一種重定向

  在我們的網站建設中,時常會遇到需要網頁重定向的情況:象網站調整,如改變網頁目錄結構,網頁被移到一個新地址,再或者,網頁副檔名改變,如因應用需要把.asp改成.Html或.shtml,在這種情況下,如果不做重定向,則使用者收藏夾或搜尋引擎資料庫中舊地址只能讓訪問客戶還會得到一個404頁面錯誤資訊,訪問流量白白喪失;再如某些註冊了多個域名的網站,也需要通過重定向讓訪問這些域名的使用者自動跳轉到主站點,等等。

  常用的重定向方式有: 301 redirect, 302 redirect 與 meta fresh:

  301 redirect: 301代表永久性轉移(Permanently Moved),301重定向是網頁更改地址後對搜尋引擎友好的最好方法,只要不是暫時搬移的情況,都建議使用301來做轉址。

  302 redirect: 302代表暫時性轉移(Temporarily Moved ),在前些年,不少Black Hat SEO曾廣泛應用這項技術作弊,目前,各大主要搜尋引擎均加強了打擊力度,象Google前些年對Business.com以及近來對BMW德國網站的懲罰。即使網站客觀上不是spam,也很容易被搜尋引擎容易誤判為spam而遭到懲罰。

  meta fresh: 這在2000年前比較流行,不過現在已很少見。其具體是通過網頁中的meta指令,在特定時間後重定向到新的網頁,如果延遲的時間太短(約5秒之內),會被判斷為spam。

  301 Redirect實現網頁重定向

  IIS伺服器實現301重定向

  * 開啟internet資訊服務管理器,在欲重定向的網頁或目錄上按右鍵

  * 選擇“重定向到URL”

  * 在“重定向到”輸入框中輸入要跳轉到的目標網頁的URL地址

  * 選中“資源的永久重定向”(切記)

  * 最後點選“應用”

  Apache伺服器實現301重定向

  相比較來說,Apache實現起來要比IIS簡單多了。在Apache中,有個很重要的檔案.htaccess,通過對它的設定,可以實現很多強大的功能,301重定向只是其中之一。

  Redirect permanent / http://www.kingar.com/ (將目錄下內容重定向到http://www.kingar.com/ )

  redirect permanent /index.asp http://www.kingar.com/index.asp?go=category_6(將網頁index.asp重定向到http://www.kingar.com/index.asp?go=category_6)

  通過合理地配置重定向引數中的正則表示式,可以實現更復雜的匹配。有興趣的朋友可參考本站Apache手冊。

  asp下的301重定向

  Header( "HTTP/1.1 301 Moved Permanently" ) ;

  Header( "Location: http://www.kingar.com" );

  ?

  ASP下的301重定向

  <%@ Language=VBScript %>

  <%

  Response.Status="301 Moved Permanently"

  Response.AddHeader "Location","http://www.kingar.com"

  %>

  ASP .NET下的301重定向


  ColdFusion下的301重定向

  <.cfheader statuscode="301" statustext="Moved permanently">

  <.cfheader name="Location" value="http://www.kingar.com">

  舊域名重定向到新域名

  建立一個.htaccess檔案,並將下面提供的程式碼寫入檔案內,它可以確保舊域名所有的目錄或者網頁正確的跳轉到新域名內。

  記住.htaccess檔案一定要放在舊網站的根目錄下,並且新網站要和舊網站保持相同的目錄結構及網頁檔案

  Options +FollowSymLinks

  RewriteEngine on

  RewriteRule (.*) http://www.kingar.com/ [R=301,L]

  請將上面的www.kingar.com修改成你想要跳轉到的域名。

  此外,我建議大家歸總舊網站的外部連結,並聯系相應的站點修改匯入鏈鏈的URL,以指向新站點。

  注意:.htaccess檔案只有在使用安裝有Mod Rewrite模組的Apache作為WEB伺服器的Linux主機上才能起作用

  域名301重定向到www的二級域名

  在以前的文章中我反覆提及過:www.kingar.com是kingar.com域下的一個二級域名,並對二級域名和一級目錄之間如何選擇以及網站結構優化做了一個詳細的分析,有興趣的可以讀一下兩篇文章,網站結構優化是SEO中最重要。

  OK,繼續域301跳轉到www二級域的實現方式:

  建立一個.htaccess檔案,並將下面提供的程式碼寫入檔案內,它可以確保所有來自對kingar.com的請求都轉向到對www.kingar.com進行請求。記住.htaccess檔案一定要放在舊網站的根目錄下,並且新網站要和舊網站保持相同的目錄結構及網頁檔案

  Options +FollowSymlinks

  RewriteEngine on

  rewritecond % ^kingar.com [nc]

  rewriterule ^(.*)$ http://www.kingar.com/ [r=301,nc]

  請將上面的kingar.com和www.kingar.com修改成你想要跳轉到的域名。

  注意:.htaccess檔案只有在使用安裝有Mod Rewrite模組的Apache作為WEB伺服器的Linux主機上才能起作用

  301重定向檢測工具

  配置完成後,一定認真檢查一下是否正確。Internet有很多類似的Server Header檢查工具,如Check Server Headers Tool - HTTP Status Codes Checker

  網站302重定向使用不當導致被GOOGLE懲罰

  Business.com是網上最大的商業搜尋引擎和分類目錄,以專業提供商業資訊而享負盛名,包括近19萬網頁。若以“business”為關鍵詞在Google中進行搜尋,該網站名列第一。不過在9月5日,Business.com遇到一件蹊蹺之事:它的首頁由PR8變成了PR0,而且Google搜尋結果中找不到首頁。好在被“蒸發”的只是首頁,不過慶幸的是第二天首頁又回到了Google的搜尋結果,但PR仍舊為0。

  Business.com的問題出在它的重定向命令上。該網站讓business.com跳轉到www.business.com,這種重定向本該是永久性的。我們知道,301屬於永久性重定向,而302則屬於臨時性重定向,只有當一個網站或網頁在24到48小時之內臨時移到其它位置的情況下才能使用該命令。但Business.com卻錯誤地使用了“HTTP/1.1302 Object Moved”狀態碼。

  其實網站重定向極為普遍,譬如不滿意原來的域名而申請了一個新域名;買下容易被人錯拼的域名,防止客戶因為拼錯URL而找不到網站,等等。可是,很多人卻會由於使用了錯誤的重定向狀態碼而遭“滅站之災”,就象Business.com。儘管他們的重定向理由充分合理,然而若使用不當,則可能被Google誤認為是利用多個域名指向同一網站,那麼你的網站就會被封掉,罪名是“利用重複的內容來干擾Google搜尋結果的網站排名”。Business.com就是最好的前車之鑑。只不過大多數使用錯誤重定向引數的網站沒Business.com這麼幸運,一個小小的重定向就可能使網站前功盡棄,只能從頭來過:重新申請新域名,重新發布新網站,等等。記住:Google絕不會同情任何人即使無心犯下的錯誤。

  網站伺服器響應網頁瀏覽請求的運作流程

  讓我們先來了解一下使用者/搜尋引擎和網站一開始的互動流程。當用戶或搜尋引擎向一個網站伺服器發出網頁瀏覽請求時,該伺服器將:

  1.通過域名伺服器(DNS)將域名轉換為網站的IP地址,然後返回給客戶

  2.開啟一個該IP套介面連線

  3.記下通過該套介面的一個HTTP資料流

  4. 從WEB伺服器接收一個響應請求的HTTP資料流。該資料流包含狀態碼,狀態碼的值由HTTP協議所決定。這裡所說的“HTTP資料流”資訊也叫“頭資訊 (Header)”。頭資訊中包括了日期,伺服器型別,通常還會有一條“200 OK”資訊。如果一切良好,那麼網路伺服器就會將“200 OK”資訊以及請求頁面傳送出去。如果網站在這時候已經建立了重定向,那麼伺服器就會在頭資訊中包含一個“302 Moved Temporarily”或“301 Moved Permanent”之類的響應資訊。搜尋引擎會根據伺服器頭資訊中的內容作出決定。

  網站重定向的注意事項

  1.若準備將伺服器上的檔案移到其它地方時,須就以下資訊正確地通知搜尋引擎的爬行程式:

  - 目標地址:這些檔案被移向何方

  - 移動屬性:暫時移走還是永久性移走

  2.對擁有多個域名的網站,專家建議應把那些不想在搜尋引擎上推廣的域名用301跳轉命令來永久性重定向。

  確保網站實施了正確的301重定向

  對於正確實施301重定向,有這樣幾個方法可供大家參考:

  1.在.htaccess檔案中增加301重定向指令

  2.適用於使用Unix網路伺服器的使用者。通過此指令通知搜尋引擎的spider你的站點檔案不在此地址下。這是較為常用的辦法。形如:Redirect 301 / http://www.kingar.com/

  3.在伺服器軟體的系統管理員配置區完成301重定向

  適用於使用Window網路伺服器的使用者

  4.採用“mod_rewrite”技術

  通過該技術進行的改變將在.htaccess檔案中體現出來,形如:

  Options +FollowSymLinks

  RewriteEngine on

  RewriteCond % ^kingar.com

  RewriteRule ^(.*)$ http://www.kingar.com/ [R=permanent,L]

  5.繫結/本地DNS(域名別名跳轉)

  如果具有對本地DNS記錄進行編輯修改的許可權,則只要新增一個記錄就可以解決此問題。

  若無此許可權,則可要求網站託管服務商對DNS伺服器進行相應設定。

  DNS伺服器的設定

  若要將aaa.kingar.com指向www.kingar.com,則只需在DNS服務中應增加一個別名記錄,可寫成:aaa IN CNAME www.kingar.com。

  如需配置大量的虛擬域名,則可寫成:* IN CNAME www.kingar.com.

  這樣就可將所有未設定的以kingar.com結尾的記錄全部重定向到www.kingar.com上。

  6.用ASP/asp實現301重定向:

  程式碼在上面已經介紹過了

  資深SEO專家Dan Thies的看法和建議

  對於Business.com所遭遇的問題Dan Thies深有體會,因為他也有過類似的遭遇。他的網站上有一個會員跟蹤指令碼,其中一個會員的站點通過302命令對映到這個跟蹤指令碼,而這個跟蹤指令碼又是通過302對映到他的主頁。當在Google中用“keyword research”進行搜尋,他的主頁排名在前十位,然而地址顯示的卻是那個會員的網址。結果使他哭笑不得:訪問者通過Google搜尋結果進入他的網站,而他卻不得不為這些訪問量給那個會員支付報酬! 後來他用robots.txt檔案禁止Spiders跟蹤訪問他的會員跟蹤指令碼才算解決了問題。

  對於Business.com,Dan Thies認為:“目前Google在302重定向"的處理上還存在一定的問題,但並不表示Google不允許302重定向。Business.com並未遭封或遭到懲罰,它們只是返回了錯誤的響應。”

  Dan Thies建議:如果使用了跟蹤URL/指令碼,又必須讓訪問者重定向到某一著陸頁,那麼一定要在robots.txt檔案中禁止Spiders去訪問第二個重定向。如果沒有對跟蹤URL/指令碼進行重定向,而只是把另外一個URL上的內容給複製過來,那麼應在robots.txt檔案中禁止Spiders去訪問跟蹤URL,以防因內容重複而遭搜尋引擎懲罰。

  301重定向經驗談

  一個多域名站主的經驗之談:

  “我只有一個網站,主域名是www.kingar.com,此外還有諸如domain1.com、domain2.com、domain3.com等共計十幾個域名。所有這些次級域名都對映到www.kingar.com,而且所有域名對應的是同一個IP地址。由於事實上我只有一個站點,一個站點又只能對應一個.htaccess檔案,顯然不可能直接修改.htaccess檔案來實現重定向。我採用瞭如下步驟:

  A.把domain1.com從kingar.com上獨立出來,讓它成為伺服器上的一個普通獨立網站。

  B.為domain1.com建立一個.htaccess文字檔案,並在檔案中設定重定向程式碼為:

  Redirect permanent / http://www.kingar.com/

  再將修改後的.htaccess檔案上傳給domain1.com所在伺服器。

  這一步也可以在域名控制面板中完成。

  C. 進入域名控制面板,將所有原來繫結到kingar.com上的域名從kingar.com上釋放,然後重新繫結到doamin1.com。這樣一來,這些被繫結的域名使用的都是domain1.com的.htaccess檔案,因而也就意味著它們都被永久性重定向到kingar.com上了。好了,大功告成! 就這麼容易!