Yönlendirmede gerçekte ne olur
Tarayıcı bir URL istediğinde ve sunucu 3xx durum koduyla bir Location başlığı döndürdüğünde, tarayıcı o yeni adrese sessizce ikinci bir istek yapar. Ziyaretçi yalnızca hedefi görür; maliyet — fazladan bir gidiş-dönüş — ve anlam, durum kodunun üstündedir.
301, kaynağın kalıcı taşındığını söyler: istemciler şimdi yeni URL'e gitsin ve bir dahaki sefere eskisini atlamayı hatırlasın. 302, geçici olarak başka yerde olduğunu söyler: şimdi oraya git ama gelecekte yine aslını sor. Yönlendirmelerle ilgili önemli olan her şey — SEO, cache, geri-alınabilirlik — bu iki sözden hangisini verdiğinizden türer.
Arama motorları her biriyle ne yapar
301'de arama motorları taşınmayı editoryal gerçek sayar: eski URL'in birikmiş sinyalleri — bağlantılar, geçmiş, sıralama — yenisine aktarılır ve takip eden haftalarda yeni URL sonuçlarda eskisinin yerini alır. Site taşımalarının, HTTPS geçişlerinin ve slug değişikliklerinin 301 ile yapılmasının sebebi budur: itibar içeriği izler.
302'de motorlar sözün gereğini yapar: eski URL'i indeksli tutarlar, çünkü içeriğin döneceğini söylediniz. Kalıcı bir taşınma için yerinde bırakılmış 302, klasik sessiz SEO hatalarından biridir — ziyaretçiler için her şey çalışır ama yeni URL hiç tarihçe biriktirmezken eskisi yavaşça bayatlar. Birini keşfederseniz, 301'e çevirmek aktarımı başlatır; motorlar düzeltmeyi zarifçe işler.
Aynadaki hata da vardır: gerçekten geçici bir şey için (kampanya sayfası, A/B testi) kullanılan 301, motorlara orijinali indeksten düşürmelerini söyler — tam da istemediğiniz şeyi.
Zor yoldan öğrenilen kısım: 301'ler yapışır
Tarayıcıların 301'i süresiz cache'lemesine izin vardır — ve birkaçı tam olarak bunu yapar. Ziyaretçinin tarayıcısı yönlendirmeyi ilk gördüğünde onu süresiz hatırlayabilir ve eski URL'i bir daha hiç sormayabilir. Sunucuyu yarın düzeltin; o ziyaretçi yine yanlış sayfaya iner, çünkü yönlendirme artık erişiminizin ötesinde, onun tarayıcısında yaşamaktadır. Başkalarının tarayıcıları için purge düğmesi yoktur.
İki pratik sonuç. Birincisi, taşınmayı 302 ile test edin ve ancak eminken 301'e terfi ettirin — geri alınabilir olan geçici koddur. İkincisi, yönlendirmelere açık bir Cache-Control koyun; sınırlı ömür, "sonsuza dek yapıştı"yı "en kötü bir gün yapıştı"ya çevirir. Bu sitede o kuralı uyguluyoruz: kanonik yönlendirmelerimiz Cache-Control: public, max-age=86400 taşır — sonradan değiştirdiğimiz bir yönlendirme bile aradaki her ziyaretçi ve cache için en geç bir günde kendini düzeltir.
Sınırlı, cache'lenebilir ömürlü bir yönlendirme
$ curl -sI https://cdn.com.tr/en/features/almacenamiento-objetos-s3 | grep -iE 'http|location|cache-control'
HTTP/2 301
location: https://cdn.com.tr/en/features/object-storage
cache-control: max-age=86400, public
Yönlendirme zincirleri: her tıklamada ödenen vergi
Yönlendirmeler birikir. http→https kuralı bir sıçrama ekler, www kuralı bir tane daha, yeniden adlandırılmış slug üçüncüyü — ve artık her ziyaretçi herhangi bir içerik akmadan önce üç gidiş-dönüş öder; arama motorları her ara adımda biraz sinyal seyreltir ve çok uzun zincirleri izlemeyi tümden bırakır.
Çözüm yönlendirmelerden kaçınmak değil; her eski URL'in doğrudan nihai hedefe işaret etmesini sağlamaktır. Zaten kendisine yönlendirme gelen bir sayfayı yeniden adlandırdığınızda ESKİ kuralı da güncelleyin ki URL'in iki kuşağı da tek sıçramada yeni adrese gitsin. Ara sıra denetim URL başına tek komuttur ve görmek istediğiniz şekil, tek bir 301'in ardından 200'dür.
Zincirin tamamını izleyin, sıçramaları sayın
# -L yonlendirmeleri izler; her sicramanin kodunu ve hedefini yazdir
curl -sIL -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.com/eski-sayfa
# her sicramayi acikca gorun (cevap basina bir satir)
curl -sIL http://example.com/eski-sayfa | grep -iE '^HTTP|^location'
# saglikli: HTTP/1.1 301 -> HTTP/2 200. sagliksiz: 301 -> 301 -> 302 -> 200
CDN'de yönlendirmeler: nerede yaşamalı ve cache'lenmeleri
Uygulamanızın sunduğu yönlendirme çalışır ama değişmeyen tek bir başlık üretmek için origin'e tam bir yolculuk maliyeti öder. Bilinen yönlendirmeleri edge'e taşımak — ya da uygulamanızın ürettiklerini edge'in cache'lemesine izin vermek — onları ziyaretçiye yakın cevaplar.
Burada iki yarı da mevcut. Dağıtım kuralları doğrudan edge'de yönlendirebilir (mobil site yönlendirmesi panelde tek alanlık bir ayardır) ve yakın tarihli bir iyileştirmeden beri edge, origin'inizden gelen 301 ve 302'leri de sınırlı ömürlerle cache'ler — böylece taşınmış bir URL'in tekrarlanan taramaları uygulamanıza hiç ulaşmaz olur. Pratik tavsiye: yönlendirmelerinize her cevap gibi açık bir Cache-Control verin; 302'lere kısa, 301'lere bir güne kadar — trafiği emecek kadar uzun, kendi hatalarınızdan sağ çıkacak kadar kısa.
Beş saniyede seçim
Sayfa yeniden adlandırdınız, domain taşıdınız, HTTPS'e geçtiniz, kopyaları birleştirdiniz: 301 — ve eski zincirleri doğrudan nihai URL'e çevirin. Kampanya sayfası, bakım sapağı, A/B testi, coğrafi ayrım, geri almayı düşündüğünüz her şey: 302. Henüz emin değilseniz: önce 302 — geri alınabilir olan odur — taşınma oturunca 301'e terfi ettirin.
Ve kalanları yakalayan üst kural: yönlendirme, bir URL'in geleceği hakkında bir sözdür. Gerçekten tutabileceğiniz söze uyan kodu seçin.
Sık sorulan sorular
301 yönlendirmeler sıralama sinyali kaybettirir mi?
Google yıllardır 301'lerin sinyali tam aktardığını söylüyor — tarihsel "PageRank kaybı" endişesi geçersiz. Gerçekten sinyal sızdıran şey uzun zincirler ve karışık 301/302 dizileridir; eski URL'leri doğrudan nihai hedefe çevirmenin tek-sıçrama sorusundan daha önemli olmasının sebebi de budur.
Arama motorları 301'imi ne kadar sürede işler?
Yönlendirme ziyaretçiler için anında çalışır. İndeks güncellemesi — sonuçlarda yeninin eskiyi değiştirmesi — tarama sıklığına göre günler-haftalar alır. Yönlendirmeyi kalıcı olarak yerinde tutun; motorlar periyodik yeniden doğrular ve erken kaldırmak, hâlâ eski URL'e işaret eden her bağlantıyı ortada bırakır.
Yanlış bir 301 ziyaretçi tarayıcılarında cache'lendi. Şimdi ne olacak?
Sunucu kuralını düzeltin ve ESKİ URL'in yeni cevabını hızlı sona eren bir Cache-Control ile sunun. Tekrar gelen tarayıcılar cache'siz ilk isteklerinde kendini düzeltir; süresiz cache'leyenler bir sonraki cache tahliyesinde düzelir. Yönlendirmelerin ilk günden sınırlı Cache-Control taşıması gerekmesinin sebebi tam olarak budur.
Yönlendirme uygulamamda mı edge'de mi yaşamalı?
Yapısal, kalıcı yönlendirmeler (www, https, taşınmış bölümler) isabet başına maliyetsiz oldukları edge'e aittir. Uygulama durumu gerektiren mantık için uygulama-düzeyi yönlendirmeler uygundur — ve edge 301/302 cevaplarını cache'lediğinden onlar bile tekrar ziyaretlerde origin'inizi dövmeyi bırakır.