ASP.NET ile 301 yönlendirmesi
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");

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
#301 #302 #moved #permanently #Temporary #Redirect #RedirectPermanent #header #http #statuc #code
Sitede url yapısı değiştiyse 301 yönlendirmesinde nasıl bir yol izleyebiliriz?
Sitede diyelim 1000 adet makale mevcut.
onceki url xsite.com/192-meyve-kalorileri.html
Yeni url : xsite.com/meyve-kalorileri-ve-faydalari.html
Bu durumda 200 adet değişmiş url olduğunu var sayarsak
Hepsini tek tek tespit edip yeni url ye yönlendirme mi yapacağız linklerin indexlenmesini kaybetmemek için?
Sabit bir değişiklik olmadığını için baştaki 192 gibi id den okuduğumuz değeri kaldırarak raw url yi okuyup RedirectLocation yapabiliriz fakat bazı url lerde yukarıdak gibi xsite.com/meyve-kalorileri-ve-faydalari.html ekstra eklenmiş url leri nasıl tespit edip yönlendirme yapabiliriz? Pek mümkün değil gibi geliyor ( tek tek uğraşmazsan)
eskiden
https://www.daltinkurt.com/Yazi-Kategori/1/ASP-NET.aspx
olan url leri
https://www.daltinkurt.com/ASP-NET/
olarak değiştirdim.
yaptığım iş .htaccess dosyasına şu satırı eklemek oldu:
RewriteRule ^Yazi-Kategori/(\d+)/(.*).aspx /$2/ [R=301,L]
satırın sonundaki R=301 yönlendirmesi `Redirect Permanent` demek. yani kalıcı olarak yönlendirmek demektir.
google sonuçlarından da eski url ler zaman içerisinde silindi.
kolay gelsin.
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();
}