Arama motorlarında yüksek sıralarda çıkma konusunda uzun süredir webciler birbirini yemekte. Bir deli (google) kuyuya taş atıyor, geri kalan akıllılar çıkarmaya uğraşıyor durumu.

Ben buralara girmeyeceğim, bugün “yönlendirme” dediğimiz şeyin ne olduğu, kaç çeşit olduğu, nasıl yapıldığı ve hangisinin ne zaman yapılması gerektiğinden bahsediyorum.

URL nedir?

Uniform Resource Locator teriminin baş harflerinden oluşan kısaltmadır. Bizim “adres” dediğimiz şeydir. scheme://domain:port/path?querystring#fragmentID syntaxına sahiptir. Örneğin okuduğunuz yazının URL’i http://www.hazarkarabay.com.tr/web/kodlama/arama-motoru-dostu-yonlendirmeler-301-redirect/ tir.

URL Yönlendirme (redirect) nedir?

Bir URL’e gelenleri başka bir URL’e iletme işlemi yönlendirmedir. Birçok sebep için yönlendirmeleri kullanmaktayız. Aşağıda yönlendirmelerin kullanım alanları incelenmektedir.

URL yönlendirme kullanım alanları

  1. Arama motoru ve insan dostu link oluşturma (SEO): www.adres.com/sayfa.php?bolum=3 gibi bir adres, biz insanlara içeriği açısından ilk bakışta bir anlam ifade etmemekte. Ayrıca arama motorlarının da query string (özellikle de uzun) barındıran linkleri çok sevmedikleri bilinmektedir. Dolayısıyla belli bir mantık ile, bu linki www.adres.com/makaleler/hazarin-seo-yazisi şekline çevirmek, bu kullanıma örnektir. Bu sayfada linki daha tıklamadan, içeriği hakkında bir fikir sahibi olmanız mümkün olabilmektedir.
  2. Sık değişen adresler için sabit bir adres: Programcısınız ve Süper Yazılım isminde bir yazılımınız var. Bu yazılımınızın indirme linki de superyazilim.com/super_v2.exe olsun. Süper Yazılım v2 indirme linki tüm kullanıcılar tarafından paylaşılabilir, indirilebilir. Fakat siz Süper Yazılım v3’ü çıkardığınızda, bu sefer superyazilim.com/super_v3.exe olarak yüklediniz. Sadece eski linki bilenler (URL’den dosya adresini silip ana sayfanıza gitme becerileri olmadığını düşünüyoruz) yeni yazılımınıza erişemeyeceklerdir. superyazilim.com/son_surum diye bir link yapmış olup bunu da super_v3.exe’ye yönlendirseydiniz, herkeste değişmeyen tek bir adres ve yazılımın son sürümü kullanılabilir olacaktı.
  3. Link kısaltma: Uzunluk olarak büyük linkleri daha kısa, taşınabilir / akılda kalıcı alternatifleriyle değiştirmek.
  4. Sitede giden link takibi: Sitenizde benim linkimi verdiniz. Buna kaç kişinin gittiğini bilemezsiniz (ben sizden gelenleri bilirim [Referrer] ama bu konu dışı). Sizin sitenizden benim linkime tıklayanları takip edebilmek için sizinsiteniz.com/yonlendir/hazarinsitesi tarzı bir link oluşturabillir ve tıklandığında bana gelmesini sağlayabilirsiniz.
  5. Domain alternatifleri: Bu sitede örneğini görebilirsiniz. www.hazarkarabay.com’a gitmeyi denerseniz sizi www.hazarkarabay.com.tr’ye iletecektir. Zira ben adresimi .com.tr olarak veriyor da olsam, insanlar .tr uzantısını yazmayı unutabilir, ya da neden Ctrl+Enter’a basarak kolayca gidilemeyen bir adres almadığınız için size sövebilirler. Bu ziyaretçileri de memnun edebilmek adına aslında kullanmadığım ekstra bir domaine de para ödüyorum örneğin.
  6. Site taşıma: eskiadres.com adresinizi değiştiriyorsunuz, yeniadres.com aldınız. Eski adresinize gelen ziyaretçileri yeni adresinize yönlendirebilirsiniz.

URL yönlendirme teknikleri

  1. Link verme: Evet, bu da bir yönlendirmedir. Şu şekilde verdiğim link ile, tıklayanları başka bir adrese yönlendiriyorum. Lüzumsuz bilgi olarak burada; kullandığım WordPress temasına yaptığım değişiklik sayesinde dış (external) linklerin yanına otomatik olarak bir ikon eklendiğini görebilirsiniz. Böylece ziyaretçi, linke tıklaması sonucu sitenizi terkedeceğini tıklamadan anlayabilecektir.
  2. Refresh META tag: HTML kodunuza ekleyeceğiniz Refresh meta tag’i ile belirli bir saniye sonra başka bir adrese yönlendirme yapılabilmekte veya sayfa yenilenebilmektedir. SEO isteyenler için kullanımı tavsiye edilmez ama böyle bir niyetiniz yoksa, çalışır.
  3. Javascript redirect: window.location = ‘baskaadres’ şeklinde yapılan yönlendirmelerdir. Bana kalırsa hiçbir şekilde kullanılmamalıdır. Ziyaretçinizin Javascript desteğinin olduğu ya da açık olduğu kesin bir şey olmamakla birlikte; arama motorları da Javascript’leri işlemez.
  4. Frame redirect (cloaking): İyi ve kötü amaçla kullanılır. Browser çubuğunda yazan adres, frame içerisinde nereye giderseniz gidin aynı kalacaktır. Bu; gezinti esnasında site adresinizin hiç değişmeden aynı gözükerek kullanıcıya daha iyi gözükmesi açısından iyi bir amaçla kullanılabilir. Kötü kullanımı ise frame altında zararlı bir siteye yönlendirme yaparak oluşur. SEO adına kullanılmamalıdır.
  5. HTTP status code 3xx ile yönlendirme: Otomatik bir yönlendirme yapılması gerektiğinde kullanılması gereken budur.

HTTP 3xx yönlendirmeleri

HTTP protokolünde 3 ile başlayan durum kodları, tarayıcının başka bir adrese gitmesi ve bunu niye yapması gerektiği konulu direktifler içermektedir. Konumuz ile ilgili ve çok önemli 2 adet HTTP status code bulunmaktadır.

Bunlar, 301 ve 302’dir. İkisinin de yaptığı şey “yönlendirme” olmakla beraber, kullanım yerleri farklıdır. Aşağıda bu yönlendirmeleri detaylı olarak inceliyorum.

HTTP 302 Found / Moved Temporarily

302 redirect, en sık kullanılan yönlendirmedir. Bir URL’in istenmesi sonucu Web sunucusundan 302 gelmesi durumunda şuna benzer bir yanıt gelecektir.


HTTP/1.1 302 Found
Location: http://www.hazarkarabay.com.tr

Bu cevabı alan tarayıcı şunu düşünecektir: İstediğim URL’yi görebilmem için Web Sunucusu, Location: karşısında yazan adrese gitmemi istiyor.

302 redirect’te yönlendirme sebebi açık değildir. Yönlendirme kesin de değildir. İstenen söz konusu URL kesin olarak bir yere taşınmamıştır, sadece şu an başka bir yerdedir. 302 status code alınan URL’ye tekrar gidilmek istendiğinde, direkt olarak bundan önce bize gönderdiği “location” adresi denenmez, kesinlikle tekrar sunucuya sorulur. Çünkü geçici bir yönlendirmedir.

Ne zaman kullanmalıyım?

Otomatik olarak oluşturulan, değişkenlik gösteren onay formları vb. gibi sayfaların yönlendirmelerinde kullanılmalıdır.

Ne zaman kullanmamalıyım?

Permalink (kalıcı link) yapısı oluştururken, site linklerini SEF linklere çevirirken kesinlikle kullanılmamalıdır. Arama motorları nezdinde, hem eski SEF link olmayan adresiniz, hem de yeni SEF linkli adresiniz ayrı sayfalar gibi alınacak, üstelik bu sayfalar birbirinin aynısı olduğu için arama motorları sizi tekrarlı içerik (duplicate content) gerekçesiyle aşağılara itecektir.

HTTP 301 Moved Permanently

301 Redirect ise “kesin” yönlendirmelerde kullanılması gereken metoddur. 302 ile yapısal olarak aynıdır. Bir URL’in istenmesi sonucu Web sunucusundan 301 gelmesi durumunda şuna benzer bir yanıt gelecektir.


HTTP/1.1 301 Moved Permanently

Location: http://www.hazarkarabay.com.tr

Bu cevabı alan tarayıcı şunu düşünecektir: İstediğim URL; Location’da belirtilen adrese taşınmış. Oraya gitmeliyim.

301 redirect’te yönlendirme sebebi açıktır. İstenen söz konusu URL kesin olarak bir yere taşınmıştır ve yeni adresi elimizdedir. 301 status code alınan URL’ye tekrar gidilmek istendiğinde, direkt olarak bundan önce bize gönderdiği “location” adresi denenebilir, tekrar sunucuya sorulmadan tasarruf edilebilir. Yönlendirme kalıcıdır.

Ne zaman kullanmalıyım?

Kesin yönlendirmelerde; örneğin permalink, SEF link yapılarında SEO açısından mutlaka 301 redirect kullanılmalıdır.

Örnekler

PHP ile HTTP Redirect’ler / Yönlendirmeler

Bu iş için hazırladığım ufak bir fonksiyon bulunmakta. Kalıcı ve geçici yönlendirmelere destek vermekte olup, parametresiz çağırdığınızda ana sayfanıza yönlendirme yapmaktadır.

function redirect($addr = '/', $permanent = false) {
	if ($permanent) header("HTTP/1.1 301 Moved Permanently");
	header("Location: $addr");
	die();
}

PHP’de header() fonksiyonunu kullanmadan önce, sayfaya hiç bir output vermemiş olma, veyahut output buffer kullanma gereksinimini bildiğinizi varsayıyorum.
Bu fonksiyon ile tüm yönlendirme işleriniz hallolacaktır.

Örnek 302 redirect:

redirect('/iletisim/');

— Adres olarak “relative” bir adres verdik, ama domain’e absolute; / ile başlıyor dikkatinizi çekerim. Bulunduğunuz sitenin içerisinde bir yönlendirme yapacaktır. Örneğin bu kod bu sitede çalışırsa www.hazarkarabay.com.tr/iletisim/ adresine gidecektir. Eğer ki redirect(‘iletisim/’) şeklinde çağırsaydınız, http://www.hazarkarabay.com.tr/web/kodlama/iletisim/ gibi bir adrese giderdiniz.

Örnek 301 redirect:

redirect('http//www.google.com', true);

— Bu sefer de bir TLD’ye (top level domain) yönlendirme yaptık. Bu kodun olduğu sayfalara girenler, Google’a kalıcı olarak yönlendirilecek.

Örnek anasayfa redirect:

redirect();

— Bu şekilde kısa kullanımı ben genellikle sistem olası izinsiz girişimleri algıladığında çalışacak şekilde kullanıyorum. Sizi doğrudan anasayfaya götürür, 302 redirect olduğu için SEO açısından risksizdir.

Apache .htaccess ile Redirect’ler / Yönlendirmeler

.htaccess dosyanızın içerisindeki yönergelere yönlendirmeleri şu şekilde ekleyebilirsiniz.

Tek sayfa yönlendirme

Redirect /eski.html http://www.yenisite.com/yeni.html [R=301,L]

— R=301, redirect kodunu belirtmekte.

Komple site yönlendirme

RewriteEngine on

RewriteCond %{HTTP_HOST} ^([^.:]+\.)*eskisite\.com\.?(:[0-9]*)?$ [NC]
RewriteRule ^/(.*)$ http://www.yenisite.net/$1 [R=301,L]

Kolay gele.