首先在Visual Studio中建立一個網站,在Default頁面的Page_Load事件中寫下 Response.Redirect("http://www.baidu.com");
然後添加一個 Page_LoadComplete事件處理方法。
最終效果如下:
在12和17行設定了斷點,友善對整個過程進行觀察。
打開Fiddler,用以觀察整個過程中的HTTP資料。
點選“調試”按鈕
程式開始執行。
這時Fiddler中出現了一條資料:
這是浏覽器向http://localhost:53765/WebSite2/Default.aspx 發出了一個GET請求。
這時候伺服器還沒有對剛才浏覽器發出的請求作出響應,是以在Fiddler中,并沒有讀到這次HTTP請求的響應。
然後我在伺服器端按F5,使程式繼續執行。當程式執行了Response.Redirect語句之後,在Fiddler 中收到了伺服器端的回應。
很明顯,伺服器端并沒有傳回給我們頁面的 Default頁面的html資料,而是給了一個302 Found,并在Location中給出了“http://www.baidu.com”, 這就是在告訴浏覽器:請重新發出一個HTTP請求,所請求的URL為"http://www.baidu.com"
浏覽器于是按照吩咐,重新發出了一個http的請求
這次是向百度的伺服器發出了一個GET請求。
然後百度傳回了如下資料:
這次是200 OK,content-type 是html,後邊跟的是百度首頁的html代碼
然後浏覽器根據這個傳回資料,解析 html代碼,在我們的螢幕上将百度的樣子顯示了出來
并且,這個過程中我們注意到:Page_LoadComplete()方法并沒有被執行,這說明當伺服器執行到Response.Redirect語句時,會立即中斷頁面的生命周期,直接向用戶端傳回資訊,讓用戶端進行重定向操作。
整個過程就是這樣了。
另外
ASP.NET 4 增加了一個RedirectPermanent方法,該方法同樣是重定向,但生成的HTTP響應狀态不是上邊所示範的302,而是301(永久跳轉)
301 是對搜尋引擎最友好的重定向方式。
那麼什麼叫做對搜尋引擎友好呢?
比如你有個網站http://www.foo.com ,當人們通路http://www.foo.com 這個URL時,你就把他們重定向到http://www.foo.com/widgets/,那麼當搜尋引擎爬到http:www.foo.com這個網址時,如果它不能很好地跟随重定向,則它将認為http://www.foo.com頁面時沒有内容的,是以這個頁面的排名将會非常靠後。
如果我們把一個位址采用301 跳轉方式跳轉的話,搜尋引擎會把老位址的PageRank等資訊帶到新位址,同時在搜尋引擎索引庫中徹底廢棄掉原先的老位址。
這隻是很簡單的叙述,其實關于搜尋引擎友好的問題很複雜,欲了解更多請自行搜尋之。
本文轉自 我不會抽煙 51CTO部落格,原文連結:http://blog.51cto.com/zhouhongyu1989/1295087,如需轉載請自行聯系原作者