Müşteri farklı davranmalı mı? Nasıl?
Müşteri farklı davranmalı mı? Nasıl?
Yanıtlar:
Durum 301, kaynağın (sayfa) kalıcı olarak yeni bir konuma taşındığı anlamına gelir. İstemci / tarayıcı orijinal konumu talep etmeye çalışmamalı, ancak bundan sonra yeni konumu kullanmalıdır.
Durum 302, kaynağın geçici olarak başka bir yerde bulunduğunu ve istemci / tarayıcının orijinal URL'yi istemeye devam etmesi gerektiği anlamına gelir.
Bir arama motoru örümceği bir web sayfasının yanıt başlığında 301 durum kodu bulduğunda, bu web sayfasının artık mevcut olmadığını anlar, yanıt olarak konum başlığını arar ve yeni URL'yi seçer ve dizine eklenen URL'yi yenisiyle değiştirir ve pagerank aktarır .
Arama motoru, artık mevcut olmayan tüm dizine alınmış URL'yi (301 bulundu) yeni URL ile yeniler, bu eski web sayfası trafiğinizi korur, pagerank ve yenisine yönlendirir (eski web sayfanızın trafiğini kaybetmezsiniz).
Tarayıcı: bir tarayıcı 301 durum kodu bulursa, eski URL'nin eşlemesini yeni URL ile önbelleğe alırsa, istemci / tarayıcı orijinal konumu talep etmeye çalışmaz ancak önbellek temizlenmedikçe yeni konumu kullanmaya başlar.
Bir arama motoru örümceği bir web sayfası için 302 durumu bulduğunda, yalnızca geçici olarak yeni konuma yönlendirir ve her iki sayfayı da tarar. Eski web sayfası URL'si hala arama motoru veritabanında bulunur ve her zaman eski konumu istemeye ve taramaya çalışır. İstemci / tarayıcı yine de orijinal konumu talep etmeye çalışır.
Asp.net c # 'da nasıl uygulanacağı ve arama motorları üzerindeki etkisi hakkında daha fazla bilgi edinin - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
Çoğunlukla 301 ve 302, arama motorlarında endeksleme için önemlidir, çünkü tarayıcıları bunu dikkate alır ve 301'i kullanırken PageRank'i aktarır.
Daha fazla bilgi için Peter Lee'nin cevabına bakınız.
301, istenen kaynağa yeni bir kalıcı URI atanmış olması ve bu kaynağa gelecekteki tüm referansların döndürülen URI'lerden biri kullanılarak yapılması gerektiğidir.
302, istenen kaynağın geçici olarak farklı bir URI altında bulunmasıdır.
Yönlendirme zaman zaman değiştirilebileceğinden, istemci gelecekteki istekler için İstek URI'sını kullanmaya devam etmelidir.
Bu yanıt yalnızca Önbellek Denetimi veya Sona Erme üstbilgisi alanıyla belirtilirse erişilebilir.
<?php header("location: http://example.com/new.php"); ?>
ile old.php ve new.php dosyasıyla bir dosya oluşturun <?php echo 'I am new'; ?>
ve bağlantıya gidin . "Ben yeniyim" metnini yönlendirir ve görüntüler. Sonra old.php içindeki kodu değiştirin <?php echo 'I am old'; ?>
ve bağlantıya gidin . "Ben yaşlıyım" metnini göreceksiniz. Old.php dosyasında 301 yönlendirmesini gerçekleştirseydiniz, old.php kodundaki değişikliklerden sonra bile "Ben yeniyim" metnini görürdünüz.
webcomic.com/latest
yönlendirilirse webcomic.com/some-comic-title
ve tarayıcı her zaman "some-comic-title" a yönlendirir. Bir sonraki çizgi roman yayınlandığında ve "en son" artık "başka bir çizgi roman başlığı" na yönlendiriyor olsa bile ... Burası 302'nin daha iyi olacağı yerdir.
301 yönlendirmeleri süresiz olarak önbelleğe alınır (en azından bazı tarayıcılar tarafından).
Bu, bir 301 oluşturursanız, bu sayfayı ziyaret ettiğinizde yalnızca yeniden yönlendirilmekle kalmaz, aynı zamanda yeniden yönlendirme de önbelleğe alınır.
Bu sayfayı tekrar ziyaret ettiğinizde, Tarayıcınız * bu URL'yi istemeye bile uğramaz, yalnızca önbelleğe alınmış yönlendirme hedefine gider.
Önbellekte bu yeniden yönlendirmeye sahip bir ziyaretçi için 301'i geri almanın tek yolu orijinal URL'ye yeniden yönlendirmektir **. Bu durumda, Tarayıcı döngüyü fark eder ve son olarak gerçekten girilen URL'yi ister.
Açıkçası, facebook'a veya tamamen kontrol altında olmadığınız başka bir kaynağa 301 karar verdiyseniz, bu bir seçenek değildir.
Ne yazık ki, birçok Hosting Sağlayıcısı Yönetici Arayüzlerinde 301 yönlendirmesi yapan "Yeniden Yönlendirme" adı verilen bir özellik sunar. Alan adınızı yakında yakında facebook olarak facebook'a yönlendirmek için bunu kullanıyorsanız, temelde mahvoldunuz.
* Tarayıcılar HTTP 301'leri ne kadar süreyle önbelleğe alır? . Chrome 45 ile denedim. Düzenleme: Mac'te Safari 7.0.6 da önbelleğe alır, tarayıcıyı yeniden başlatma işe yaramadı (Link, Windows'taki Safari 5'te yardımcı olduğunu söylüyor.)
** Javascript'i denedim window.location = ''
, çünkü çoğu durumda uygulanabilecek bir çözüm olurdu - işe yaramıyor. Belirsiz bir sonsuz Döngü ile sonuçlanır. Ancak, php header('Location: new.url')
döngüyü kırar
Alt satır: yalnızca bu URL'yi bir daha asla kullanmayacağınızdan eminseniz 301'ler kullanın. Genellikle kök dizinde asla (example.com/)
301 ile ilgili temel sorun, yönlendirmeyi sunucu düzeyinden devre dışı bırakmış olsanız bile tarayıcının yeniden yönlendirmeyi önbelleğe almasıdır.
Kısa bir bakım penceresi için yeniden yönlendirmeyi etkinleştiriyorsanız, 302'yi kullanmak her zaman daha iyidir.