2010-06-11 27 views
11

我們的asp應用程序正在轉向新的服務器,我想實現一個permenant url重定向。我知道以下兩種方法,我需要了解哪一個用戶比其他用戶更好?response.redirect和響應狀態301在asp中重定向有什麼區別?

選項1:

<%@ Language=VBScript %><% Response.Redirect "http://www.example.com" %> 

選項2:

<%@ Language=VBScript %><% Response.Status="301 Moved Permanently" 
    Response.AddHeader "Location","http://www.example.com/" %> 

謝謝,

尼基爾。

回答

1

Response.Redirect()(和301的等效方法RedirectPermanent())在幕後做了很多事情。它會檢查請求的URL字符串,對其進行編碼,如果有事件調用Redirecting事件的事件處理程序,並最終調用Response.End(),該響應會將響應刷新回瀏覽器並中止當前線程。

最終,您可能不會注意到手動設置標題和調用重定向之間的差異。

順便說一句,有更多(和更好的)選項來處理這個問題。 IIS有一個URL Rewriting module,它可以讓你重定向給定的URL,而無需將你的頁面作爲請求處理程序調用,並集中管理你的URL以便於管理搜索引擎。

+0

這是不正確的。詳情請參閱我的回答。 – 2010-06-11 19:08:58

+0

這裏有什麼不對? – womp 2010-06-11 19:12:28

+0

正是我在回答中所說的。沒有辦法讓Response.Redirect做301. – 2010-06-11 19:17:46

0

默認情況下,正常重定向將使用HTTP status 302。與status 301重定向不會被searchbots(如Googlebot)編入索引,如果是,它們將從現有索引中刪除。如果您想要將舊網址「更新」爲新的網址,這將非常有用。無論如何,searchbot會將狀態爲302的重定向編入索引,因此您可能最終會在搜索結果中造成污染。您通常會使用302狀態作爲PRG格局,而狀態301則會用於永久重定向,就像您現在所做的一樣。

12

Response.Redirect發出302,這是一個臨時重定向。 301,使用您列出的Response.AddHeader,用於永久重定向。

301和302之間的區別對搜索引擎優化有一定的重要性。 301將會保留你舊的位置的所有搜索排名。另一方面,如果您不希望將新頁面編入索引,則可以使用Response.Redirect(302),因爲引擎會將臨時重定向考慮在內。谷歌並沒有對302進行索引,因爲很多垃圾郵件發送者用它來增加他們的排名。

由於您永久移動到新的服務器,301是最好的方式。

-2

Response.Redirect向瀏覽器發送一個「302 - 臨時移動的」狀態代碼,根據你在做什麼,這可能會也可能不會。如果您將內容重定向到正確的位置,則您需要執行301重定向,因爲搜索引擎無法正確抓取302.

+0

這不是100%正確的。如果您將「永久」標誌設置爲false,則Response.Redirect僅發送一個302。它可以發送無論是301還是302,他有做兩者的選擇,他並不需要手動設置標題發送301 – womp 2010-06-11 19:13:51

+0

@womp - 你根本不知道你在說什麼。沒有「永久性」的標誌。 Response.Redirect函數接受一個或兩個參數 - 目標URL和可選布爾值來結束響應。請教育自己:http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx – 2010-06-11 19:17:08

+0

@womp - 如果您無法讀取整個頁面 - 在這裏是爲您的重要組成部分 - 「ASP.NET執行通過返回一個302 HTTP狀態碼重定向。「 – 2010-06-11 19:19:09

相關問題