Ana içeriğe geç

Rehberler / HTTP durum kodları açıklandı

301 ile 302: kalıcı ve geçici yönlendirmeler

Bir 301, kaynağın kalıcı olarak taşındığını ve yeni URL'nin eskisinin yerini her yerde alması gerektiğini söyler; bir 302, taşınmanın geçici olduğunu ve orijinal URL'nin hala gerçek olan olduğunu söyler. Arama motorları bu farka göre hareket eder, ki bu da yanlış kodun size sıralamalara mal olmasının nedenidir.

İki kod bir istemciye ne söyler

Her iki kod da istemciyi Location başlığındaki adrese gönderir, ve bir ziyaretçiye ikisi de aynı görünür. Fark, geri kalan her şeyin bu bilgiyle ne yaptığıdır. Bir 301, istemcileri ve tarayıcıları kayıtlarını güncellemeye davet eder: yer imini değiştirin, bağlantıyı yeniden yazın, kaynak yerine hedefi indeksleyin. Bir 302, onlardan orijinal URL'yi kullanmaya devam etmelerini ve bu sefer yalnızca bir sapma yapmalarını ister. Tarayıcılar bir 301'i önbelleğe alabilir ve sunucuya hiç sormayı bırakabilir; yanıt aksini söylemedikçe bir 302 varsayılan olarak önbelleğe alınabilir değildir.

Hangisi ne zaman kullanılır

  • 301 kullanın bir alan adı değişikliği, bir HTTP'den HTTPS'e göç, www olmayandan www'ye kanonikleştirme, kalıcı bir URL yeniden yapılandırması, birleştirilmiş veya yeniden adlandırılmış bir sayfa, veya en yakın yerine getirici sayfaya işaret eden emekliye ayrılmış bir ürün sayfası için.
  • 302 kullanın bir bakım sayfası, bir A/B testi, değiştirebileceğiniz bir coğrafi veya dil açılış sayfası seçimi, kısa ömürlü bir kampanya URL'si, veya geçici bir "daha sonra geri gel" hedefi için.

Geri almayı düşündüğünüz bir şey için asla 301 kullanmayın. İstemciler onu önbelleğe aldığı için, geri dönen ziyaretçiler kuralı sildikten çok sonra bile geçici hedefe inmeye devam edebilir, ve onların önbelleklerine ulaşmanın bir yolu yoktur. Tersi hata: kalıcı bir taşımada bir 302 bırakırsanız eski URL indekslenmiş kalır, yenisi onunla rekabet eder, ve sinyaller bölünmüş kalır.

SEO sonuçları

Google'ın belgeleri, kalıcı bir yönlendirmenin yönlendirme hedefinin kanonik URL olarak ele alınması gerektiğine dair bir sinyal olduğunu, geçici bir yönlendirmenin ise böyle olmadığını, bu yüzden orijinal URL'nin indekste yerini koruduğunu belirtir. Pratikte:

  • Bir 301, bağlantı değerini hedefte birleştirir ve zamanla eski URL'nin yerini indekste yenisiyle değiştirir.
  • Bir 302 genellikle kaynak URL'yi indekslenmiş bırakır. Arama motorları niyeti yorumlamaya çalışır, bu yüzden uzun ömürlü bir 302 sonunda kalıcı olarak ele alınabilir, ama doğru tahmin edileceğine güvenmemelisiniz.
  • Yönlendirme zincirleri faydayı sulandırır ve taramayı yavaşlatır. Eski URL'leri doğrudan son hedefe işaret edin.
  • Emekliye ayrılmış birçok sayfayı ana sayfaya yönlendirmek, bir taşıma yerine yumuşak bir 404 olarak ele alınma eğilimindedir. En yakın eşdeğer sayfaya yönlendirin, veya eşdeğer hiçbir şey yoksa bir 410 döndürün.
  • Neyi seçerseniz seçin, onu kanonik etiketlerinizle ve site haritanızla tutarlı tutun. Çelişkili sinyaller, biraz ideal altı olandan daha kötüdür.

307 ve 308: yöntemi koruyan sürümler

301 ve 302'nin özgün tanımları HTTP yöntemi konusunda belirsizdi, ve istemciler, standardın şimdi tarihsel olarak tanımladığı bir davranışta karar kıldı: bir POST'tan sonra bir 301 veya 302'yi takip ederken, birçok istemci yöntemi GET'e değiştirir ve gövdeyi düşürür. Bir sayfa için bu zararsızdır. Bir form uç noktası veya bir API için isteği yok eder ve hiçbir şey raporlamaz.

307 Temporary Redirect, 302 ile aynı anlama gelir, ve 308 Permanent Redirect, 301 ile aynı anlama gelir, ikisine de bir gereklilik eklenmiş halde: yöntem ve gövde korunmalıdır. Yani yalnızca GET istekleri alan URL'ler için, 301 ve 302 sorunsuzdur ve çoğu aracın beklediği şeydir. POST, PUT, PATCH veya DELETE kabul eden herhangi bir şey için, kalıcı bir taşıma için 308, geçici bir taşıma için 307 kullanın. Özellikle bir POST'un başka bir URL'de bir GET tarafından takip edilmesini istiyorsanız, 303 See Other'ın var olma amacı budur.

Bir URL'nin hangi kodu döndürdüğü nasıl kontrol edilir

  1. Yönlendirmeyi takip etmeden durum satırını ve hedefi okuyun:
    curl -sI https://example.com/old-page | grep -Ei "^(HTTP|location|cache-control)"
    Durum satırı 301, 302, 307 veya 308 gösterir, ve Location nereye işaret ettiğini gösterir.
  2. Tüm zinciri takip edin ve sıçramaları sayın, böylece bir yönlendirmenin üçe dönüşüp dönüşmediğini görebilirsiniz:
    curl -sIL -o /dev/null -w "%{num_redirects} hops, final %{http_code}, %{url_effective}\n" https://example.com/old-page
  3. Uç nokta kabul ediyorsa bir POST ile test edin. İstek hedefe gövdesiz bir GET olarak ulaşırsa, kuralı 307 veya 308'e çevirin.
  4. Kodu oluşturulduğu yerde değiştirin. Bu uygulama, web sunucusu yapılandırması, bir .htaccess kuralı, veya CDN olabilir. İki katman da yönlendiriyorsa, en dıştaki kazanır ve iç kural görünmez olur.
  5. Soğuk bir önbellekle doğrulayın. Zaten bir 301'i önbelleğe almış bir tarayıcı ona uymaya devam eder, bu yüzden değişikliğin tutmadığına karar vermeden önce curl veya gizli bir pencereyle doğrulayın.
  6. Kalıcı bir taşımadan sonra, yönlendirmeyi yerinde tutun. Onu daha sonra kaldırmak, hala eski URL'ye işaret eden her bağlantıyı ve yer imini ortada bırakır.

Ayarladıktan sonra bir yönlendirmeyi izlemek

Kodu değişen, döngüye giren veya TLS sertifikasını kaybeden bir yönlendirme, kaynak URL'yi hala yanıt verir halde bırakır, bu yüzden trafik düşene kadar hiçbir şey bozuk görünmez. Tam durum kodunu kaydeden ve zinciri takip eden dış kontroller bunu bir sonraki çalıştırmada ortaya çıkarır, ve bunları birçok ağdan çalıştırmak küresel bir kural değişikliğini bölgesel bir CDN sorunundan ayırır. HostTracker 2004'ten beri web sitelerini izliyor ve 158 şehirdeki 300'den fazla kontrol noktasından kontroller çalıştırıyor. Bir URL'nin şu anda ne döndürdüğünü HTTP kontrolü aracıyla görün, ve bu ikisinin her iki yanındaki kodlar için tam 3xx yönlendirme ailesi rehberini okuyun.

Şimdi kontrol edin

Ücretsiz kontrolü kendi sitenizde çalıştırın - hesap gerekmez.

HTTP check

Bunu sürekli izleyin

Bir sorun çıktığı anda haberdar olun: HostTracker 300’den fazla konumdan kontrol eder ve size e-posta, SMS, Slack, Telegram ve daha fazlasıyla bildirim gönderir.

HostTracker özellikleri

Bu bölümde daha fazlası: HTTP durum kodları açıklandı