8

Bu, hedef URL sık sık değiştiğinde kısa URL yönlendirmesinin uygulanmasına yönelik en iyi yöntemi belirlemeye çalıştığım Using 301/303/307 redirects for dynamic short urls numaralı takip sorusudur.301 yeniden yönlendirmeyi önbelleğe almayı önleme

301 ve 307 yönlendirmelerinin her ikisinin de aynı şekilde gerçekleştirdiği anlaşılıyor olsa da, beni ilgilendiren konu 301 yönlendirme önbelleklemesidir (belgelenmiş here) - bunun yerine 307 yönlendirmeyi kullanmaktan kaçınmanın en iyi yoludur (varsayalım) 307 yönlendirmeleri asla önbelleğe almayacak mı?) Veya önbellek olmayan bir üstbilgiyi açıkça gönderecek ("Önbellek Denetimi: no-cache, revalidate")?

+0

related: http://stackoverflow.com/questions/12192590/how-to-do-a-non-cached-301-redirect/19003320#19003320 –

cevap

16

301 önbelleğe alma işleminden kaçınmaya çalışmayın. Herhangi bir kullanıcı aracısının yönlendirmenizi önbelleğe almasını istemiyorsanız, 301 yönlendirme kullanmayın. Diğer bir deyişle, 301 önbelleğe alma burada kalıyor ve semantik olarak, kalıcı yönlendirmesidir, bu nedenle hedef URL'yi değiştirmeyi planlıyorsanız, 301 kullanmak için doğru durum kodu değildir. Diğer taraftan, 307 responses are not cached by default.

+3

Yorumunuz HTTP belirtimini ihlal ediyor. İstemciler, bir 301. – Gili

+0

@Gili yes'de mevcut olduğunda 'Cache-Control''ü takip etmelidir, istemciler Cache-Control'ü onurlandırmalıdır, ancak 301 hala * kalıcıdır * ve yönlendirme olması amaçlanmamışsa kullanılmamalıdır. kalıcı. Kalıcı olduğu için, https://tools.ietf.org/html/rfc2616#section-10.3.2 –

+0

301'de tanımlandığı şekilde varsayılan olarak cacheble olması, * kalıcı * olması gerekmemektedir (bu sadece varsayılan önbellekleme kuralıdır). Http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-24#section-6.4.2 'ye göre, aksi takdirde [...] açık önbellek denetimleriyle belirtilmemişse 301 yanıtı önbelleğe alınabilir. "önbellek denetimleri", "Önbellek Denetimi" ve ilgili üstbilgiler anlamına gelir. – Gili

8

301 yönlendirmesinin getirdiği davranışı istediğiniz durumlarda, tarayıcı yer işaretlerinin güncellenmesi ve google bot'ta URL'nin değiştirilmesi gibi, ancak aynı zamanda yönlendirmeleri izlemek veya başka bir tür işlev gerçekleştirmek istiyorsanız hep önbellek kontrol başlıklarını ekleyebilir "önbellek" için

php olarak
HTTP/1.0 301 Moved Permanently 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Expires: Sat, 26 Jul 1997 05:00:00 GMT 
Location: http://example.com 

Bu gibi görünüyor: İlgili

header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
header('Location:'.$url, true, 301); 

: https://stackoverflow.com/a/19003320/175071

İlgili konular