19 Ekim 2017 Perşembe
Twitter

ASP.NET ile 301 yönlendirmesi

301 / 302 yönlendirmeleri ile ilgili bir yazı...

Web uygulamalarımızda, bir sayfadan bir başka sayfaya gitmek için sıklıkla Response.Redirect(..) metodunu kullanırız.

Response.Redirect(...) metodu aslında tarayıcıya Geçici Yönlendirme (HTTP 302 - Temporary Redirect) bilgisi göndermektedir. Böylece tarayıcımız, belirttiğimiz sayfadan akışa devam eder.

Response.Redirect("YeniSayfa.aspx");

Ancak bu durum arama motorları için özel bir anlam taşır. Crawler uygulamaları (Arama motorlarının web sitelerini indexlemeye yarayan uygulamaları), HTTP 302 yönlendirmesini gördüğü zaman kendi akışına yeni sayfadan devam etmez. Adı üstünde Geçici Yönlendirme, neden yeni sayfadan devam etsin ki :)

Peki bu durumda ne yapmamız gerekiyor. Yönlendirme esnasında tarayıcıya HTTP 302 değil, HTTP 301 bilgisini göndermemiz gerekli.

HTTP 301 yönlendirmesi ile tarayıcıya Kalıcı Olarak Taşındı (HTTP 301 - Moved Permanently) bilgisi gönderilir ve Crawlerlar, HTTP 301 mesajını görünce kendi akışlarına yeni sayfadan devam ederler. Bu sayede tüm web sitemiz indexlenebilecektir.

Ancak bu noktadaki sıkıntı, bu yönlendirmeyi direkt yapacak bir Response.???() metodunun olmayışı. (VS 2008 için söylüyorum)

Aşağıdaki kodlar aracılığıyla HTTP 301 - Moved Permanently yönlendirmesi yapılmaktadır.

Response.Status = "301 Moved Permanently";
Response.StatusCode = 301;
Response.RedirectLocation = "YeniSayfa.aspx";
Response.End();

VS 2010'da bu satırlar tek satıra indirgenmiş durumda:

Response.RedirectPermanent("YeniSayfa.aspx"); 

301 redirect

Hadi kardeş teknolojiler için de yönlendirme kodlarını yazayım:

ASP için;

Response.Status="301 Moved Permanently";
Response.AddHeader("Location","YeniAdres.asp");

PHP için;

Header( "HTTP/1.1 301 Moved Permanently" ); 
Header( "Location: yeni-adres.php" ); 

Diğer HTTP Statuc Codelarını görmek için buraya tıklayabilirsiniz.

Bir yönlendirme sonunda tarayıcıya gönderilen bilgiyi görmek için güzel bir adres: http://dalt.in/Wq3f2

Değerlendirme

Yazım dilinin sadeliği ve anlaşılabilirliği Puan: 4,75 (4 oy)
Yazıdaki kodların kalitesi Puan: 4,80 (4 oy)
İhtiyaca cevap verme Puan: 4,86 (4 oy)
Tavsiye edilebilirlik Puan: 4,74 (4 oy)
Genel değerlendirme Puan: 4,65 (4 oy)
Puanlamalar 5 üzerindendir.
  • Site Yorumlarý
  • Facebook Yorumlarý Facebook Yorumlarý
Yeni yorum yaz Toplam: 5, Onay bekleyen: 0.
  1. Sertan Özcan

    Merhaba. Sormak istediğim bir şey var. Asp.NET uygulamamda 301 yönlendirmesini yönetim panelinden yapabiliyorum. Fakat yapılmış bir 301 yönlendirmesini nasıl iptal edebilirim? Deneme olarak bir yönlendirme yaptım ama ne yaptıysam bunu iptal edemedim. Yine 301 yönlendirmesi ike orjinal url ye mi yönlendirmeliyim? 301 clear gibi bir şey var mıdır? Saygılar. İyi çalışmalar.

  2. ekrem

    genelislemler.cs ye şunu ekledim :)

    public static void SayfaYonlendir(string Sayfa)
    {

    HttpContext.Current.Response.Status = `301 Moved Permanently`;
    HttpContext.Current.Response.StatusCode = 301;
    HttpContext.Current.Response.RedirectLocation = Sayfa;
    HttpContext.Current.Response.End();
    }

  3. Devrim Altınkurt

    Dostum istediğin yere yazabilirsin. Nerede, ne zaman istersen :=)

  4. Tgb

    Peki ama bunu nereye yazacagız? Globalasax dosyasının içerisine mi yoksa her sayfanın kendi içerisine mi yoksa kod kısmına mı ? :S

  5. ekrem

    vs 2010 kullanıcısı olarak ayrıyeten 2010 için paylaşımınız için teşekkür ederim hocam. bundan sonrası için bu yönlendirmeyi tuttum bile ;)