Uğur Umutluoğlu

Yazılım Teknolojileri Günlüğü

Ben de 1 yıl öncesine kadar öyleydim ama blogengine çok yamuk yaptı bana :) Şimdilik memnunum bu yenilikten :)

  • RSS
  • Twitter
  • Facebook
  • Google+
  • Linkedin
  • Tumblr
  • Formspring
  • Kitablog

SEO(Search Engine Optimization) yani arama motoru iyileştirmesi son yıllarda internet dünyasında tanınmak ve para kazanmak isteyen çoğu kişinin ağzından düşürmediği bir kavram. Arama motorlarında üst sıralara çıkmak, adsense reklamlarından iyi gelirler elde etmek başlı başına bir sektör haline bile geldi! Hatta sırf bu işten ayda 1.000$’ın üzerinde gelir elde eden tanıdıklarım bile var(İmreniyorum sizlere arkadaşlar). Geçtiğimiz haftalarda Ineta Next Hit’teki ASP.NET 4.0 sunumuma hazırlanırken sayfa yönlendirme ile ilgili ASP.NET uygulamalarına has güzel bir ipucu keşfettim. Aslında Response.Redirect() metodunun tarayıcılara(web browser) HTTP 302 durum kodunu gönderdiğini ASP.NET’le ilk tanıştığım zamanlarda bile biliyordum, ama bu metotla beraber tarayıcıya nasıl HTTP 301 durum kodu göndeririz ve arama motorları tarafından nasıl daha fazla seviliriz, işte bu idi yeni keşfettiğim nokta:)

Response.Redirect programatik olarak sayfa yönlendirme işlemleri yapmamızı sağlıyor bildiğiniz gibi, ancak ilginç bir ayrıntısı da var, o an talepte bulunan istemciye HTTP 302(yani Temporary Redirect) bilgisini gönderiyor. Tabi ki bu mesajı gören arama motoru boot’ları da; “demek ki bu sayfaya geçici olarak geldim, yakında bu sayfayı belki de bulamayacağım, önemsiz bir sayfa, gerilere at!” der. Halbuki işin aslı bu kalıcı bir sayfa ve arama motorlarının da bunu böyle bilmesi gerekir. Eğer gönderilen cevabın içeriğine HTTP 301(Moved Permanently) bilgisini ekletebilirsek süper olacak. Aşağıda bu işi nasıl yapabileceğimizi görebilirsiniz. Tabi ki Response.Redirect() kullanmadan;


Response.StatusCode = 301;

Response.StatusDescription = "Moved Permanently";

Response.AddHeader("Location", "Default2.aspx");


Yukarıdaki üç satırı beğenmeyen varsa güzel bir haber vereyim; ASP.NET 4.0 ile gelecek olan Response.RedirectPermanent() metodu bu üç satırın işini görecek. Yani bu metot yönlendirmeyi yaparak istemciye HTTP 301 durum kodu gönderecek. Küçük ama hoş bir yenilik olacağa benziyor.

Bu yazıya 16 yorum yapılmış

  1. mustafa says:

    merhaba,

    sadece Response.Status = "301 Moved Permanently" şeklinde kullansak, dediğiniz kodlarla aynı işi yapar mı ?

  2. ugur says:

    Bu da işe yarar bence, sonuçta Response’un Status bilgisine bilgiyi eklemiş oluyorsunuz. Ama test etmeden de %100 işe yarar demem doğru olmaz :)

    Teşekkürler.

  3. Hasan Aytekin says:

    Ben tam olarak yararını anlamadım? Tam olarak ne işe yarayacak bu?

  4. ugur says:

    Arama motorları geçici olarak yönlendirilen bir sayfayı sıralamada arka sıralara atarlar. Amaç yönlendirilen sayfaya geçici olarak gidildiği değil, kalıcı olarak gidildiğini söylemektir. Kod parçasından önceki paragrafı tekrar okursanız anlaşılır olur bence. "Response.Redirect programatik olarak sayfa yönlendirme işlemleri yapmamızı sağlıyor bildiğiniz gibi, ancak ilginç bir ayrıntısı da var…" ile başlayan paragraf.

  5. ErTr says:

    güzel bir ipucu olmuş.. peki bunun ardından bir metod kullanmaya gerek kalmıyor mu? yani bu 3 satır tek başına başka bir sayfaya yönlenmeyi sağlayacak mı?

  6. ugur says:

    Evet yeterli olacak, test edip görebilirsiniz.

  7. mucahid1986 says:

    Valla o kadar yerde kulandım ama googlea bu kadar etki ettiğini bilmiyordum teşekkürler.

  8. ugur says:

    @mucahid1986
    Arama motorlarına çok etkisi var demek doğru olmayabilir. Ama ufakta olsa işe yarar bir ipucu.

  9. muharrem says:

    Yararlı bir bilgi teşekkür ederim

    public void git(string adres)
    {
    Response.StatusCode = 301;

    Response.StatusDescription = "Moved Permanently";

    Response.AddHeader("Location", adres);

    }

    şeklinde metot olarak kullanabiliriz ASP.NET 4.0 bekleyemeyecek olanlar:)

  10. Oasis Estate says:

    Asp için ararken çıktı karşıma. neyse ben yine benim gibi arayanlar olur diye ASP versiyonunu ekleyeyim. :)

    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location", "GondereceginizSiteAdresi"

  11. mesut says:

    ben php tabanlı bir siteyi asp.net e çevirmeye çalışıyorum da sitenin indexlenen eski sayfasının adresini yeni url ye nasıl yönlendirebilirim??

  12. ugur says:

    http://www.umutluoglu.com/post/2008/02/12/webconfig-Dosyasindan-URL-Rewriting.aspx adresindeki yazı işinizi görebilir. Ancak *.php uzantıları için IIS’de handler tanımlamak gerekebilir. Handler’ı aspnet_isapi.dll’in ele alması gerekir.

  13. Mesut says:

    hocam peki bu sistemi her sayfa için nasıl ayarlayacağız.Eski sitemiz php idi ben asp.net ile yeni site yaptım şimdi domaini kendi yaptığım asp.net sitenin hostuna yönlendireceğim fakat link yapısı değişecek bu durumda.Ben gogılda değeri yüksek olan eski link url mi yeni urlye kalıcı olarak 301 yönlendirmesi ile taşımak istiyorum sitemde de tek bir default sayfası var bütün içerik buraya çağrılıyor.Şimdi böyle bir sistemde 10-15 linki nasıl yeni url ye yönlendirebilirim?

  14. ugur says:

    Bir tabloda eskiurl-yeniurl bilgileri tutulabilir. Sonra yazılacak handler’ın içerisinde gelen request’in url’si okunarak php uzantısından önceki kısım alınır. Tabloda bu url’ye karşılık gelen yeni url bilgisine yönlendirme yapılır. Bu işe yarar sanırsam

  15. Mesut says:

    hocam yukarıda yazdığınız gibi Response.StatusCode = 301;
    Response.StatusDescription = "Moved Permanently";
    Response.AddHeader("Location", "Default2.aspx");
    sistemiyle daha basit bir yoldan halledemezmiyiz bir de eski url yapısında .php uzantısı yok zaten direk …com/urun-adi şeklinde

  16. ugur says:

    Eğer ASP.NET 4.0 kullanıyorsan yazının son paragrafında zaten daha kolay yolunu söylemişim :) Ama 4.0 öncesi ise, daha kolay yolu var mı bilmiyorum.


ASP.NET MVP