Yönlendirme (redirection), bir URL’yi farklı bir URL’ye yönlendirme işlemi olarak açıklanabilir. Yönlendirme genelde 3 türe ayrılır: 301, 302 ve meta refresh.
301, SEO için önerilir ve kalıcı olarak taşıma anlamına gelir. 302 ise genellikle geçici olarak taşınan sitelerde kullanılır.
Yönlendirme nedir?
Yönlendirme hem kullanıcılar hem de arama motorları tarafından istenen URL’lerin, farklı URL’lere yönlendirilmesi işlemidir. En sık kullanılan yönlendirme türleri şöyle:
301 Kalıcı Yönlendirme
301 yönlendirmesi, sıralama gücünü de %90-99 oranlarında yönlendirilen sayfaya taşıyan bir kalıcı yönlendirme biçimidir. “301” bu tür yönlendirmelerin HTTP durum kodunu belirtir. 301 yönlendirmeleri birçok durum için en iyi yönlendirme seçeneğidir.
302 Found (HTTP 1.1) / Geçici Yönlendirme (HTTP 1.0)
Google çalışanlarından bazıların fikrine göre 301’ler ve 302’ler birçok durumda benzer şekilde ele alınabilir. Fakat biz kalıcı olarak yönlendirme yapan kişilerin 301, sürekli değişiklikler yapan kişilerin de 302 yönlendirmelerini kullanması öneriyoruz.
İnternet, URL’lerin nasıl işleyeceğini belirlemek için kullanılan bir protokol olan HyperText Transfer Protocol (HTTP) ile çalışır. HTTP’nin 1.0 ve 1.1 olmak üzere 2 önemli versiyonu vardır. İlk sürümde “302 Geçici Yönlendirme” olarak bilinen yönlendirme biçimi, 1.1 sürümünde “302 Bulundu” şeklinde değiştirildi.
307 Geçici Olarak Taşındı (Sadece HTTP 1.1’de)
307 yönlendirmesi, 302’nin HTTP 1.1’deki veliahttı niteliğindedir. Büyük tarayıcılar bu yönlendirmeye bazı durumlarda 302 gibi davranırlar. Fakat en sağlıklı çözümler için 301 kullanmak en uygunudur. Bunun tek istisnası içeriğinizin yalnızca geçici olarak taşındığı zamanlardır, bu da genellikle bakım yapıldığı zamanlarda icap eder. 307 daha yeni bir yönlendirme biçimi olsa da hangi tarayıcıların bununla uyumlu olduğunu bilmek mümkün olmadığı için geçici olarak taşınan içerikler için 302 yönlendirmelerini kullanmak en iyisidir.
Meta Refresh Nedir?
Meta refresh, sunucu düzeyinde değil de sayfa düzeyinde yapılan bir yönlendirme çeşididir. Genellikle daha yavaş çalışır, bu yüzden de SEO için pek tavsiye edilmez. Bu yönlendirme çeşidi genellikle 5 saniyelik geri sayımlarla çalışır ve “5 saniye içinde yönlendirilemiyorsanız buraya tıklayın” metnini sunar. Meta refreshler aynı sıralama gücüne sahiplerdir fakat SEO açısından zayıf bir kullanılabilirliğe sahiptir. Bu yüzden tavsiye edilmez.
En İyi SEO Uygulamaları
Bir URL’yi başka bir URL’ye yönlendirme işlemi sık sık karşılaşılan bir durumdur. Fakat bu işlemi yaparken SEO değerlerini korumak da oldukça önemlidir.
Bunun en yaygın örneği ve akla gelen ilk senaryo; başka bir adrese kalıcı olarak yönlendirilmesi gereken bir URL:
Bunu yapmak için kullanabileceğiniz birden fazla seçenek var. Fakat genel olarak hem kullanıcılar hem de arama motorları için 301 yönlendirmeleri tercih edilir. 301’i kullandığınız zaman hem tarayıcılar hem de arama motoru botları sayfanın kalıcı olarak taşındığını anlayacaktır. Arama motorları sadece sayfanın yerinin değiştirildiğini değil aynı zamanda bulunduğu yeni URL’yi ya da güncellenmiş sürümünü belirtir. Motorlar herhangi bir bağlantıyı orijinal sayfadan yeni URL’ye şöyle taşıyacaktır:
Bir sayfayı bir URL’den diğerine taşırken arama motorlarının 301’i keşfetme sürecinin ve bir önceki sayfanın sıralama becerilerine ulaşım sürecinin biraz zaman alacağını unutmayın.
Yönlendirme ile ilgili diğer seçenekler 301’in yaptığı kadar iş görmez, çünkü arama motorlarında çok etkin değillerdir ve sıralama değerleri 301 yönlendirmeleri kadar başarılı olmayacaktır. Diğer alternatiflerin daha kullanışlı olduğu tek zaman, bir webmaster’in kasıtlı olarak yeni sayfaya bağlantı göndermek istemediği zamandır.
Bir domainden başka bir domaine yönlendirilirken bir sitenin tamamı değişirse işlem daha karmaşık bir hal alır. Bu gibi durumlarda kullanıcılar tarafından bol bol spam gönderilir, eğer arama motorları kötüye kullanım şüphesine düşerse arama motoru işlemleri çok daha fazla zaman alabilir.
Apache’de 301 Yönlendirmeleri
www.ornekdomain.com adında bir web sitemizin olduğunu ve bu web sitemizin kendi domain adında değil de www.baskaornekdomain.com/seo adresinde barındırıldığını varsayalım. Geliştiriciler www.ornekdomain.com adresinin kendi özel sunucularına taşıdıkları zaman www.baskaornekdomain.com’un bir alt dizini olmasındansa kendi etki alanı olarak erişilmesini istesinler. Bunun için de birkaç dosya ve klasör adının değişmesi ve arama motorlarına uygun olması için de 301 yönlendirmelerinin olması gerekiyordu. İşte varsayımımızın çözümü:
Çözüm:
Bunun en basit yolu www.ornekdomain.com‘a güç veren PHP koduna 301 yönlendirmeleri eklemek olacaktır. Ayrıca geliştiriciler, mod_rewrite apache modülünün gücünden de yararlanarak tüm PHP komut dosyalarını incelemek zorunda kalmadan tüm klasörleri eşleştirerek yeni URL’lerine yönlendirebilirler.
Kurulum:
Bu işlemin gerçekleşebilmesi için bir web sunucusuna mod_rewrite apache modülünün kurulu olması gerekir. Çoğu Apache kurulumunda varsayılan olarak mod_rewrite kurulu olacaktır. Modülün aktif şekilde çalışıp çalışmadığını kontrol etmek için geliştiriciler geçerli .htaccess dosyasına aşağıdaki satırı ekleyerek test edebilirler:
RewriteEngine On
İçerik
Bir geliştiricinin httpd.conf adlı apache yapılandırma dosyasını düzenlemesi gerekebilir. Bir geliştirici httpd.conf dosyasına erişemezse, .htaccess dosyalarını kullanmak durumunda kalacaktır.
Belirli Dosyaları ve Klasörleri Bir Domain’den Bir Diğerine Yönlendirme
Geliştiricilerin eski bir sunucudan yenisine yönlendirilmesi gerektiğini varsayalım.
Örnek:
Yönlendir: http://www.ornekdomain.com/seo/s… To: /bazidosyalar.php
Çözüm:
Aşağıdaki direktifi ornekdomain.com sunucusundaki ilgili dosyaya ekleyin:
RedirectMatch 301 /seo/(.*) /$1
Açıklama:
/seo/(.*) ifadesi apache’ye SEO klasörünü eşleştirmesini ve ardından 0 ya da daha fazla karakter söylemesini söyler. (.*) ifadesi ise apache’ye diziyi bir back-referans olarak kaydetmesini söyler. Bu back referans ile yönlendirilmiş olan URL’nin sonuna $1 yerleştirilir.
Canonical Hostname’leri Yönlendirme
Geliştiricilerin www.ornekdomain.com ile başlamayan isteklere “www” eklenecek şekilde yönlendirme yapmak istediğini varsayalım. Bunu canonicalization hatalarından kaçmak için yaparlar.
- Yönlendir: http://ornekdomain.org/
- Buraya: http://www.ornekdomain.org/
- Yönlendir: http://mail.ornekdomain.org/
- Buraya: http://www.ornekdomain.org
- Yönlendir: http://ornekdomain.org/bazidosyalar.php
- Buraya: http://ornekdomain.org/bazidosyalar…
Çözüm:
Aşağıdaki direktifleri takip edin:
RewriteCond %{HTTP_HOST} *!^www*.ornekdomain\.org [NC]<br>
RewriteRule (.*) http://www.ornekdomain.org/$1 [L,R=301]
Açıklama:
Bu yönerge ziyaretçinin eriştiği sunucuyu incelemesini ve eş değer görülmediği taktirde www.ornekdomain.org adresine yönlendirilmesini Apache’ye bildirir. (!) işareti de “eğer host www.ornekdomain.org değilse RewriteRule yapılsın” anlamına gelir.
Dosya Adını Koruyan Yönlendirme
Yönlendirme ile dosya adlarının korunması yerine eski sunucunun yeni domainin kök URL’sine yönlendirilmesi gerektiğini varsayalım.
- Yönlendir: http: //www.ornekdomain.com/seo/s …
- Buraya: http://www.baskaornekdomain.org
Çözüm:
Aşağıdaki direktifleri ekleyin:
RedirectMatch 301 /seo/bazieskidosyalar.php http://www.baskaornekdomain.org
Açıklama:
Tüm parantezler atlanarak /seo/bazieskidosyalar.php için yapılan tüm istekler http://www.ornekdomain.org URL’sine yönlendirilmelidir.
GET String Yönlendirme
Bazı PHP scriptleri farklı isimler aldı fakat GET string aynı kalmıştı. GET stringleri koruyarak PHP komut dosyalarına yönlendirme yapmamız gerektiğini varsayalım. GET string, URL’de bir dosya adından sonra gelen ve bir web sayfasına veri aktarmak için kullanılan karakterlerden oluşan bir kümedir.
- Yönlendir: http: //www.ornekdomain.com/seo/c …
- Buraya: http: //www.baskaornekdomain.org/artcat.p …
Çözüm:
Aşağıdaki direktifleri ekleyin:
RedirectMatch 301 /seo/categorydetail.php(.*) http://www.baskaornekdomain.org/artcat.php$1
Açıklama:
(.*) ifadesi ise apache’ye herhangi bir karakter için 0’dan fazlasını eşleştirmesini ve back referans olarak $1’ı kaydetmesini söyler.
Dosya Uzantılarını Değiştirerek Yönlendirme
Orijinal hikâyede HTML ve PHP’den oluşan karma bir klasör vardı. Yeni serverda bu dosyaların tümü PHP oldu bu yüzden de bazı yönlendirmeler gerekti.
- Yönlendir: http: //www.ornekdomain.com/seo/g …
- Buraya: http: //www.baskaornekdomain.org/articles …
- Yönlendir: http: //www.ornekdomain.com/seo/g …
- Buraya: http: //www.baskaornekdomain.org/articles …
Çözüm:
Aşağıdaki direktifi ekleyin:
RedirectMatch 301 /seo/guide/(.*)\.(php|html) http://www.ornekdomain.org/articles/$1.php
Açıklama:
(.*) ifadesi ise apache’ye herhangi bir karakter için 0’dan fazlasını eşleştirmesini ve back referans olarak $1‘ı kaydetmesini söyler. \.(php|html), apache’ye “php” ya da “html” ile eşleştirmesini ve back referansı $2 olarak kaydedilmesini söyler.(Bu örnekte bu kullanılmaz) “Php” ile “html” arasında bulunan “|” karakteri de değerlerden 2’sini birden değil de herhangi birini eşleştirmek için kullanılır. Yani (php | html | css | js | jpg | gif) denmiş olsaydı, uzantılar php, html, css, js, jpg veya gif uzantılı dosyalardan herhangi biriyle eşleşecekti.
Diğer HTTP Durum Kodları ile ilgili daha fazla bilgi almak istiyorsanız buraya tıklayarak ilgili haberimize ulaşabilirsiniz.