301 Yönlendirme mi 302 mi? 307, 308, Zincirler ve SEO Etkisi

Adres değiştirirken seçilen durum kodu, arama motorunun hangi URL'yi dizine alacağını belirler. 301, 302, 307 ve 308 farkını, yönlendirme zincirlerini, döngüleri ve bir zinciri adım adım nasıl kontrol edeceğinizi anlatıyoruz.

8 dk okuma ToolsBasic
301 Yönlendirme mi 302 mi? 307, 308, Zincirler ve SEO Etkisi

301 yönlendirme, bir adresin kalıcı olarak yeni bir yere taşındığını; 302 ise taşınmanın geçici olduğunu söyler. Ziyaretçi iki durumda da yeni sayfaya gider. Fark arama motorlarında ve tarayıcı önbelleğinde ortaya çıkar: kalıcı yönlendirmede Google yeni adresi dizine alır ve sinyalleri ona taşır, geçicide eski adresi korumaya eğilimlidir. 307 ve 308 ise aynı ikilinin, istek yöntemini (örneğin POST) değiştirmeyen sürümleridir.

Bir adresin gerçekte hangi kodla ve kaç adımda yönlendiğini görmek için yönlendirme kontrolü aracını kullanabilirsiniz. Yeni adresleri planlarken slug oluşturucu Türkçe karakterli başlıkları temiz ve kalıcı yollara çevirir. Eski adreslerdeki %C3%BC gibi dizileri okunur hâle getirmek için URL kodlayıcı / çözücü, eski ve yeni yönlendirme listelerini yayından önce satır satır karşılaştırmak için metin fark kontrolü işinizi görür.

Yönlendirme kodları tek tabloda

HTTP durum kodlarının anlamı bugün RFC 9110'da (HTTP Semantics, 2022) tanımlıdır. 3xx ailesindeki beş kod günlük işin neredeyse tamamını karşılar:

KodAdıKalıcı mıYöntem korunur muTipik kullanım
301Moved PermanentlyEvetGaranti yok; POST, GET'e dönebilirAlan adı ya da URL yapısı değişikliği
302FoundHayırGaranti yokKısa kampanya, bakım sayfası
303See OtherHayırHer zaman GET'e dönerForm gönderiminden sonra sonuç sayfası
307Temporary RedirectHayırEvetBir süreliğine taşınan API uç noktası
308Permanent RedirectEvetEvetKalıcı taşınan API ve form adresleri

Yöntem sütunu tarihî bir kazadan gelir. HTTP/1.0 döneminde tarayıcıların çoğu 301 ve 302 aldığında POST isteğini GET olarak tekrarlıyordu; standart bu davranışı sonradan kabullendi. 307 HTTP/1.1 ile, 308 ise RFC 7538 ile yöntemin ve gövdenin değişmemesini garanti etmek için eklendi. Sıradan sayfa ziyaretlerinde (GET istekleri) 301 ile 308 arasında pratik bir fark yoktur.

301 yönlendirme ne zaman doğru seçim

Eski adres bir daha kullanılmayacaksa cevap neredeyse her zaman kalıcı yönlendirmedir. Tipik durumlar şunlardır:

  • Alan adı değişikliği: eski alan adındaki her sayfa, yeni alan adındaki karşılığına gider.
  • HTTP'den HTTPS'e geçiş ve www'li ile www'siz sürümden birinin seçilmesi.
  • URL yapısı değişikliği: /urun.php?id=42 yerine /urunler/celik-termos gibi okunur adreslere geçiş.
  • İçerik birleştirme: aynı konuyu anlatan iki zayıf yazının tek ve güçlü bir yazıda toplanması.

Önemli olan, her eski adresin en yakın karşılığına gitmesidir. Silinen yüzlerce sayfayı topluca ana sayfaya yönlendirmek kolay görünür, ama Google bu tür yönlendirmeleri "soft 404" olarak değerlendirebilir; yani sayfayı yok sayar ve hiçbir sinyal taşınmaz. Karşılığı olmayan bir sayfa için dürüst bir 404 ya da 410 yanıtı daha doğrudur.

302 ve 307'nin yeri

Geçici yönlendirme, eski adresin geri döneceği durumlar içindir: birkaç günlük bakım çalışması, stokta olmayan bir ürünün geçici olarak kategorisine yönlenmesi ya da bir A/B testinde ziyaretçinin bir varyanta gönderilmesi. Kullanıcının diline veya konumuna göre farklı sürüme gönderen giriş sayfaları da genellikle 302 kullanır, çünkü hedef kişiden kişiye değişir.

Yaygın hata, kalıcı bir taşınmayı 302 ile yapmaktır. Pek çok CMS eklentisi ve çatı (framework) varsayılan olarak 302 üretir. Google uzun süre değişmeyen bir 302'yi zamanla kalıcı gibi yorumlayabilir, ama bu sizin kontrolünüzde olmayan, belirsiz bir süreçtir. Niyetiniz kalıcıysa kodu da kalıcı seçin.

308 ve POST istekleri

Bir API uç noktasını ya da form adresini kalıcı olarak taşıyorsanız 308 kullanın. 301 ile taşınan bir POST isteği bazı istemcilerde GET'e dönüşür, gövde kaybolur ve sunucu boş bir istek alır. Bu hata günlüklerde "veri gelmiyor" diye görünür ve kaynağını bulmak saatler alır. Geçici bir API taşınmasında aynı mantıkla 302 yerine 307 tercih edilir.

301 yönlendirme ve SEO: sinyaller nereye gider

Google'ın yönlendirmelerle ilgili belgelerine göre kalıcı yönlendirmeler (301 ve 308), hedef adresin kanonik sürüm olması gerektiğine dair güçlü bir sinyaldir; geçici olanlar (302 ve 307) ise zayıf bir sinyal. Kalıcı yönlendirmeden sonra arama sonuçlarında zamanla yeni adres görünür; geçici olanda eski adres kalmaya devam edebilir. Google temsilcileri yıllardır 3xx yönlendirmelerinin sayfa değerinden (PageRank) kayıp yaratmadığını söylüyor. Asıl kayıp, alakasız hedefe yönlendirmede ve uzun zincirlerde yaşanır.

Bir site taşımasında işe yarayan sıra şöyledir:

  1. Eski ve yeni adresleri bire bir eşleyen bir liste hazırlayın; her satırda bir eski, bir yeni adres olsun.
  2. Yönlendirmeleri sunucu seviyesinde, doğrudan son hedefe giden tek adım olarak kurun.
  3. Site içi bağlantıları, site haritasını ve kanonik etiketlerini yeni adreslere güncelleyin; yönlendirmeye güvenip eski bağlantıları bırakmayın.
  4. Yönlendirmeleri en az bir yıl yerinde tutun. Google'ın site taşıma rehberi de bu süreyi önerir; dış sitelerden bağlantı alan adresler için daha uzun tutmak zarar vermez.
  5. Taşımadan sonraki haftalarda Search Console'daki dizine ekleme ve tarama raporlarını izleyin.

Yönlendirme zinciri ve döngü

Zincir, bir adresin son hedefe birden fazla adımda ulaşmasıdır. En sık görülen örnek, yıllar içinde farklı kişilerin üst üste eklediği kurallardan oluşur:

AdımİstekYanıt
1HTTP, magaza.example/kampanya301, HTTPS sürümüne
2HTTPS, magaza.example/kampanya301, www.magaza.example/kampanya adresine
3HTTPS, www.magaza.example/kampanya302, sonuna eğik çizgi eklenmiş sürüme
4HTTPS, www.magaza.example/kampanya/200 OK

Her adım ayrı bir istek ve yanıt demektir; alan adı değişiyorsa yeni bir DNS sorgusu ve TLS el sıkışması da eklenir. Yavaş bir mobil bağlantıda her adım, sayfa daha yüklenmeye başlamadan onlarca ya da yüzlerce milisaniye ekleyebilir. Google'ın belgelerine göre Googlebot en fazla 10 yönlendirme adımını izler; daha uzun zincirlerde sayfa hiç taranmayabilir. Tablodaki 3. adıma da dikkat edin: kalıcı bir zincirin ortasındaki tek bir 302, bütün yolun sinyalini bulanıklaştırır.

Döngü: ERR_TOO_MANY_REDIRECTS

Döngüde zincir hiç bitmez: A adresi B'ye, B de yeniden A'ya gönderir. Chrome bunu ERR_TOO_MANY_REDIRECTS hatasıyla durdurur, Firefox da sayfanın düzgün yönlendirilmediğini bildiren bir uyarı gösterir. En sık nedenler şunlardır:

  • CDN ya da ters vekil sunucu kaynağa düz HTTP ile bağlanırken uygulamanın her HTTP isteğini HTTPS'e göndermesi. Kaynak sunucu isteği hep HTTP olarak gördüğü için kural sonsuza dek tekrarlanır.
  • Sunucu yapılandırmasında www'yi kaldıran, CMS ayarlarında ise www'yi geri ekleyen iki ayrı kural.
  • Dil ya da çerez onayına bakarak yönlendiren ve çerezi bir türlü yazamayan bir giriş sayfası.

Zinciri tek adıma indirmek

  1. Başlangıç adresini araçla kontrol edin ve her adımın kodunu ve hedefini not alın.
  2. Sonunda 200 yanıtı veren adresi bulun; gerçek hedef odur.
  3. Kuralları, ilk istek doğrudan bu hedefe gidecek şekilde birleştirin. Örneğin HTTPS ve www kurallarını tek bir kural olarak yazın.
  4. Site içi bağlantılarda ara adımları değil, son adresi kullanın.
  5. Yayından sonra aynı adresi yeniden kontrol edin ve tarayıcıda gizli pencereyle de deneyin; kendi tarayıcınızın önbelleğindeki eski bir 301 sizi yanıltmasın.

Yönlendirme zinciri nasıl kontrol edilir

Tarayıcı yönlendirmeleri sessizce izler ve size yalnızca vardığı son adresi gösterir. Yolu görmek için isteği adım adım yürüyen bir araç gerekir. Sonucu doğru okumanız için yönlendirme kontrolü aracının nasıl çalıştığını bilmek işe yarar:

  • Adresi sizin tarayıcınız değil, sitenin sunucusu ziyaret eder ve her adımın durum kodunu ve hedefini sırayla listeler.
  • En fazla 10 yönlendirme izlenir; daha uzun bir zincirde araç sonuç yerine hata verir.
  • Yalnızca herkese açık http ve https adresleri kabul edilir. 80, 443, 8080 ve 8443 dışındaki portlar, özel ağ adresleri, localhost ve bulut metadata adresleri güvenlik nedeniyle engellenir.
  • Sayfa gövdesi indirilmez. Bu yüzden HTML içindeki meta refresh etiketleri ve JavaScript yönlendirmeleri görünmez; yalnızca sunucunun 3xx yanıtı olarak gönderdiği yönlendirmeler listelenir.
  • Kötüye kullanımı önlemek için dakikada 15 kontrol sınırı vardır.

Sonucu yorumlarken şunu akılda tutun: istek sunucunun bulunduğu yerden, sizin çerezleriniz ve oturumunuz olmadan gelir. Ülkeye, dile ya da giriş durumuna göre yönlendiren siteler, kendi tarayıcınızda gördüğünüzden farklı bir zincir gösterebilir. Bu iki taraftan birinin hatası değildir; site iki ziyaretçiye farklı davranmaktadır.

Komut satırı ve tarayıcı ile kontrol

Terminal kullanıyorsanız curl -sIL magaza.example komutu her adımın başlıklarını sırayla yazar; -I yalnızca başlıkları ister, -L yönlendirmeleri izler. Bazı sunucular yalnızca başlık isteyen isteklere farklı cevap verir; sonuç tuhaf görünürse normal bir istekle karşılaştırın. Tarayıcıda geliştirici araçlarının Ağ sekmesinde Preserve log (günlüğü koru) seçeneğini açıp sayfayı yenilemek her adımı gösterir. Orada 307 Internal Redirect yazan bir satır görürseniz şaşırmayın: bu, HSTS kaydı olan bir sitede tarayıcının HTTPS'e kendi içinde geçtiğini gösterir; sunucu öyle bir yanıt göndermemiştir.

Sunucuda yönlendirme yazmak

Apache'de tek bir sayfa için Redirect 301 /eski-termos /urunler/celik-termos satırı yeterlidir. Nginx'te aynı iş location = /eski-termos { return 301 /urunler/celik-termos; } ile yapılır. Location başlığında göreli bir yol kullanmak standarda uygundur; değer mevcut adrese göre tamamlanır. Yeni adresleri kısa, küçük harfli ve Türkçe karaktersiz seçmek, gelecek yıl bir yönlendirme daha yazmak zorunda kalmamanın en ucuz yoludur.

Sık sorulan sorular

301 yönlendirme ne kadar süre yerinde kalmalı?

Google'ın site taşıma önerisi en az bir yıldır. Eski adrese dış sitelerden bağlantı geliyorsa kuralı daha uzun, mümkünse süresiz tutmak en güvenli yoldur; bir yönlendirme kuralının sunucuya maliyeti yok denecek kadar azdır, kaldırmak ise o bağlantıların değerini çöpe atmak demektir.

Kalıcı bir taşımayı yanlışlıkla 302 ile yaptım, ne olur?

Arama motoru eski adresi bir süre daha dizinde tutabilir ve yeni adres geç görünür. Kodu 301'e çevirmeniz yeterlidir; geri alınması gereken başka bir şey yoktur. Değişiklikten sonra zinciri yeniden kontrol edin.

Tarayıcı kaldırdığım bir yönlendirmeyi neden hâlâ izliyor?

Kalıcı yönlendirmeler önbelleğe alınabilir ve tarayıcılar bunu oldukça agresif yapar. Yanlış bir 301 yayınlayıp düzelttiyseniz kendi tarayıcınız eski davranışı sürdürebilir. Test için gizli pencere kullanın ya da önbelleği temizleyin.

Meta refresh ya da JavaScript yönlendirmesi 301 yerine geçer mi?

Google ikisini de izleyebilir, ama sunucu tarafı yönlendirme her zaman daha açık ve güvenilir bir sinyaldir. Sayfa gövdesinde durdukları için başlıklara bakan denetim araçlarında da görünmezler.

Büyük bir taşımada eski ve yeni adres listesi çoğu zaman bir tabloda tutulur; bu listeyi dışa aktarırken karşılaşılan tırnak ve ayraç tuzakları için CSV ve JSON farkı yazısına bakabilirsiniz. Sayfa açılmadan önce zaman kaybettiren diğer kalemler için kod küçültme ve SEO için görsel optimizasyonu yazıları işinize yarar.

İlgili araçlar

Katalog

Blog Yazıları