Bir sayfanın adresini değiştirdiğinizde, siteyi yeni alan adına taşıdığınızda ya da HTTP’den HTTPS’e geçtiğinizde, eski adrese gelen ziyaretçileri ve arama motorlarını yeni adrese yönlendirmeniz gerekir. Yönlendirme, sunucunun tarayıcıya “aradığın şey artık şurada” demesidir ve bunu bir HTTP durum kodu ile yapar. Hangi kodu seçtiğiniz, arama motorlarının yeni adresi nasıl değerlendireceğini doğrudan etkiler.
Yönlendirme kodları: 301, 302, 307, 308
| Kod | Anlamı | Kalıcı mı? | HTTP yöntemi korunur mu? | Ne zaman? |
|---|---|---|---|---|
| 301 Moved Permanently | Kalıcı taşındı | Evet | Hayır (POST, GET’e dönüşebilir) | URL değişikliği, alan adı taşıma, HTTPS geçişi |
| 302 Found | Geçici olarak başka yerde | Hayır | Hayır | Kısa süreli kampanya, bakım sayfası, A/B testi |
| 307 Temporary Redirect | Geçici, yöntemi koru | Hayır | Evet | Formların (POST) geçici yönlendirilmesi |
| 308 Permanent Redirect | Kalıcı, yöntemi koru | Evet | Evet | API’ler, POST alan uç noktaların kalıcı taşınması |
Sıradan web sayfaları için pratikte iki seçenek kalır: kalıcı ise 301, geçici ise 302. 307 ve 308 daha çok form gönderimi ve API senaryolarında önem kazanır.
Bir de meta refresh ve JavaScript yönlendirmesi vardır. Google ikisini de takip edebilir, ama sunucu taraflı 301/302 her zaman daha hızlı ve güvenilir sinyaldir. Mümkünse sunucu taraflı yönlendirme kullanın.
SEO açısından fark
Google, yönlendirme türünü kanonik adres seçerken bir sinyal olarak kullanır:
- 301 ve 308: “Yeni adres asıl adrestir” sinyali güçlüdür. Google zamanla eski URL’yi dizinden çıkarıp yeni URL’yi gösterir.
- 302 ve 307: “Eski adres asıl, bu geçici” sinyalidir. Google genellikle eski URL’yi dizinde tutmaya devam eder.
Uzun süre yerinde duran bir 302’yi Google zamanla kalıcı gibi değerlendirebilir, ama bunu şansa bırakmayın: kalıcı değişiklikte 301 kullanın. Yönlendirmeler artık PageRank kaybına yol açmıyor; asıl risk yanlış hedefe yönlendirmek ve zincir oluşturmaktır.
Yönlendirme zincirleri ve döngüleri
Zincir, bir adresin son hedefe birden fazla adımda ulaşmasıdır:
http://ornek.com/urun → https://ornek.com/urun → https://www.ornek.com/urun → https://www.ornek.com/urunler/
Her adım bir istek ve gecikme demektir; mobil bağlantıda her biri yüzlerce milisaniye ekleyebilir. Ayrıca arama motorlarının tarama bütçesini harcar. Çözüm, her eski adresi doğrudan son adrese yönlendirmektir.
Döngü ise A → B → A şeklinde sonsuz tekrar eden yönlendirmedir; tarayıcı ERR_TOO_MANY_REDIRECTS hatası verir. Sık görülen nedenler:
- Cloudflare’de SSL modu “Flexible” iken sunucuda da HTTPS’e yönlendirme yapılması
- WordPress’te “Site Adresi” ile sunucu kuralının farklı (www / www’suz) olması
- İki eklentinin aynı anda yönlendirme yapması
Yönlendirme kontrol aracımız bir adresin izlediği tüm adımları, her adımın durum kodunu ve son hedefi gösterir. Zincir ve döngüleri bulmanın en hızlı yolu budur.
Apache (.htaccess) örnekleri
Apache sunucularda (cPanel’li paylaşımlı hostinglerin çoğu) yönlendirmeler sitenin kök dizinindeki .htaccess dosyasına yazılır. Dosyayı düzenlemeden önce mutlaka yedeğini alın; tek bir yazım hatası tüm sitede 500 hatasına yol açabilir.
Tek sayfayı kalıcı olarak yönlendirmek:
Redirect 301 /eski-sayfa https://www.ornek.com/yeni-sayfa
Tüm siteyi yeni alan adına taşımak (sayfa yolları korunur, /iletisim → yenisite.com/iletisim):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?eskisite\.com$ [NC]
RewriteRule ^(.*)$ https://www.yenisite.com/$1 [R=301,L]
HTTP ve www’suz adresleri tek adımda https://www adresine göndermek (zincir oluşmasını önler):
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.ornek.com/$1 [R=301,L]
Geçici kampanya yönlendirmesi:
Redirect 302 /kampanya https://www.ornek.com/yaz-indirimi
Kodları elle yazmak yerine 301 yönlendirme kodu oluşturucumuzla Apache, Nginx ve diğer formatlarda hazır kural üretebilirsiniz.
Nginx örnekleri
Nginx’te .htaccess yoktur; kurallar sunucu yapılandırma dosyasındaki server bloğuna yazılır. Tek bir sayfa için:
location = /eski-sayfa {
return 301 https://www.ornek.com/yeni-sayfa;
}
Tüm alan adını yeni adrese taşımak için eski alan adına ayrı bir server bloğu tanımlanır:
server {
listen 80;
listen 443 ssl;
server_name eskisite.com www.eskisite.com;
return 301 https://www.yenisite.com$request_uri;
}
Nginx’te return direktifi, rewrite kullanmaktan daha hızlı ve okunaklıdır. Değişiklikten sonra nginx -t ile yapılandırmayı test edip yeniden yükleyin.
Yönlendirmeyi komut satırından test etme
Tarayıcılar 301 yönlendirmelerini önbellekte tuttuğu için, değişikliklerden sonra tarayıcıda yapılan testler yanıltıcı olabilir. Sunucunun gerçekte ne döndürdüğünü görmek için curl kullanabilirsiniz:
curl -sI http://ornek.com/eski-sayfa
Yanıtın ilk satırında durum kodunu (HTTP/1.1 301 Moved Permanently), Location: satırında ise hedef adresi görürsünüz. Zincirin tamamını izlemek için -L parametresini ekleyin. Komut satırı kullanmak istemiyorsanız yönlendirme kontrol aracı aynı bilgiyi her adım için ayrı ayrı gösterir.
Site taşırken yönlendirme planı
Alan adı değişikliği veya site yeniden tasarımı en riskli SEO işlemlerinden biridir. Adım adım:
- Eski URL listesini çıkarın: site haritası, Search Console “Sayfalar” raporu ve en çok bağlantı alan sayfalar.
- Birebir eşleme tablosu hazırlayın: her eski URL’nin en alakalı yeni karşılığını belirleyin. Karşılığı olmayan sayfaları toplu olarak ana sayfaya yönlendirmeyin; en yakın kategoriye yönlendirin veya 410 döndürün.
- 301 kurallarını yazın ve canlıya almadan önce test ortamında deneyin.
- İç bağlantıları güncelleyin: menü, kanonik etiketler ve site haritası doğrudan yeni adresleri göstersin.
- Search Console’da “Adres değişikliği” aracını kullanın (alan adı değiştiyse).
- Taşımadan sonra kontrol edin: önemli URL’leri yönlendirme aracından geçirin, HTTP header kontrolüyle durum kodlarını doğrulayın, 404 raporlarını haftalarca izleyin.
404, 410 ve yönlendirme arasında seçim
Her silinen sayfanın yönlendirilmesi gerekmez. Sayfanın içeriği başka bir sayfada devam ediyorsa (ör. ürün yeni modeliyle değişti) 301 kullanın. İçerik tamamen kaldırıldıysa ve alakalı bir karşılığı yoksa 404 (bulunamadı) veya 410 (kalıcı olarak kaldırıldı) döndürmek dürüst ve doğru bir yanıttır. Google 410’u 404’ten biraz daha hızlı işleyebilir, ama ikisi de sayfanın dizinden çıkmasını sağlar. Kullanıcı deneyimi için 404 sayfanızda arama kutusu ve popüler kategorilere bağlantı bulunsun.
Sık yapılan hatalar
- Kalıcı değişiklikte 302 kullanmak.
- Silinen tüm sayfaları ana sayfaya yönlendirmek.
- Yönlendirme zincirlerini zamanla biriktirmek (her yeniden tasarımda yeni katman).
- İç bağlantıları güncellemeyip sitenin kendi içinde yönlendirme üzerinden dolaşması.
- Yönlendirmeleri birkaç ay sonra kaldırmak; eski bağlantılar 404’e düşer.
HTTPS geçişindeki yönlendirmeler için SSL sertifikası rehberine, sitenizin açılmadığı durumlarda site açılmıyor rehberine göz atabilirsiniz.