Response.RedirectPermanent ve Response.Redirect

Klasik ASP'den kalan alışkanlıklarımızdan Response.Redirect("url") metodunu ziyaretçimizi bir sayfadan başka bir sayfaya yönlendirmek için yıllarca kullandık. ASP.NET geldi, Redirect metodumuz baki kaldı, kullanmaya devam ettik. ASP.NET 4.0 ile gelen Response.RedirectPermanent("url") metodu, tam olarak Response.Redirect metodunun pabucunu dama atmasa da redirect metodlarını daha dikkatli kullanmaya yönlendiriyor. Peki nedir bu iki metod arasındaki fark ?  İki metod temelde aynı işlemi yapıyorlar. Yani parametre olarak verilen URL'e ziyaretçiyi yönlendiriyorlar. Aralarındaki tek fark iki metodun ziyaretçiye döndüğü HTTP durum kodu. Aşağıdaki iki örneği, Firebug benzeri bir geliştirici aracı ile izleyerek çalıştırırsak resimlerdeki gibi iki metod arasındaki farkı izleyebiliriz   protected void linkClassicalRedirect_Click(object sender, EventArgs e) { Response.Redirect("RedirectedPage.aspx"); }   protected void linkPermanentlyRedirect_Click(object sender, EventArgs e) { Response.RedirectPermanent("RedirectedPage.aspx"); }   HTTP 302 ve HTTP 301 HTTP 302 durum kodu ziyaretçiye, istekte bulunan içeriğin, geçici olarak, transfer edilen sayfaya  (örnekteki RedirectedPage.aspx) taşındığını belirtiyor.  HTTP 301 durum kodu ise ziyaretçiye, istekte bulunan içeriğin, kalıcı olarak, transfer edilen sayfaya taşındığını ifade ediyor. Bu örneğin ve kodların bir tarayıcı vasıtası ile web uygulamamızı ziyaret eden kullanıcı için birşey ifade etmediğini söyleyebiliriz. Fakat asıl fark web uygulamamızı indexleyen arama motorlarının web uygulamamızı değerlendirmeleri sırasında ortaya çıkıyor. Sitemizi dolaşıp indexleme yapan bir arama motoru, bir içeriğin kalıcı olarak taşındığını HTTP 301 kodu ile aldığında indexlemesini yeni URL üzerinden yapacak, ve böylece arama motoru üzerinden sitemize erişen kullanıcılar için içeriğe erişim hızlanacaktır (eski link üzerinden redirect edilerek erişmek yerine yeni link ile doğrudan erişim sağlayacaklardır).