2009-10-15 7 views
10

PHP'de bir sayfayı tüm tarih/önbelleği tamamen kaldıran yeniden yükleme/yeniden yönlendirmenin en iyi yolu nedir? Hangi başlıkları kullanmalıyım? ne olurPHP'de sayfaları en iyi şekilde yeniden yönlendirin/yeniden yükle

:

bir bağlantıyı tıklayarak günü, get-parametreleri ayarlanır ve bir komut dosyası çalıştırılır. Bittiğinde, get parametresi olmadan sayfayı yeniden yönlendirmek ve yeniden yüklemek istiyorum. İlk başta, hiçbir şey olmamış gibi görünüyor, ancak F5'e basıldığında değişiklikler görünüyor.

Benim istediğim:

Yönlendirme ve yeniden böylece değişiklikler F5 basmadan görünür.

+0

Daha belirgin olmanız gerekir. Tarihe geçmek istemediğiniz sayfa hangisidir? Aradığın ya da yönlendirdiğin kişi mi? Aynı önbellek için de geçerli. –

cevap

3

bu deneyin:

echo '<script>document.location.replace("someurl.php");</script>'; 

Bu tarayıcı geçmişini değil, önbelleği değiştirmelisiniz.

7

Sayfayı yeniden yüklemenin ve önbellekten alınmamaya zorlamanın en iyi yolu, URL'lerin sonuna rastgele bir kimlik veya zaman damgası eklemek olacaktır. Her seferinde isteği benzersiz kılar.

+0

Bu en iyi yol olabilir, bunu yapmak garip. düşünün: www.google.com.br?randomId=12381289371 tahsis başlıklarını göndermek gerektiğini en iyi yol. – Ismael

1
header('Location: http://example.com/path/to/file'); 
26
header('Location: http://www.example.com/', true, 302); 
exit; 

Ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

düzenleme:

Bu cevap ön belleğe alınabilir halinde bir önbellek-Control ile gösterilen veya başlık alanı aşımına.

+1

302 doğrudur. Tebrik ederiz. – Cesar

+0

Bu ben bu soruya tamamen farklı bir şey yapıyordu, sadece ne ihtiyaç vardır ama cevap kullanmak harika daha iyi :) – Jake

+0

çalıştı: header ("Cache-Control: no-cache"); header ('Yer: http: //www.example.com/', true, 302); çıkış; –

0

güvenli yolu başka herhangi bir çıkış tarayıcıya gönderilen ÖNCE gönderilmek üzere olduğunu, bir Başlık Yönlendirme

header('Location: http://www.example.com/', true, 302); 
exit; 

kullanmak Ama dikkatli olmaktır.

24
function redirect($url) { 
    if(!headers_sent()) { 
     //If headers not sent yet... then do php redirect 
     header('Location: '.$url); 
     exit; 
    } else { 
     //If headers are sent... do javascript redirect... if javascript disabled, do html redirect. 
     echo '<script type="text/javascript">'; 
     echo 'window.location.href="'.$url.'";'; 
     echo '</script>'; 
     echo '<noscript>'; 
     echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; 
     echo '</noscript>'; 
     exit; 
    } 
} 

// How to use 
$url = "www.google.com"; 
redirect($url); 
+0

Bu cevap için teşekkürler @Phill. Bu fonksiyonla bana çok zaman kazandırdın. –

+0

Hm. Kodlayıcının, belirli bir durumda kullanmak istediği yönlendirme tipine karar vermesi gerektiğine inanıyorum, onu seçmek için bir işleve dayanma. Örneğin. Eğer 'konum' üzerinden bir HTTP isteği istiyorsanız, o zaman eğer geri kalmışlarsa, geri dönüşleri kullanmak yerine, başlıkların henüz gönderilmediğinden emin olmalısınız. En azından böyle düşünüyorum – Kos

1

sadece SEO ile ilgili bilgi için:

301 kendi endeksinde url yerine arama motoru anlatırdı. Yani eğer url1 301 ile url2'ye yönlendiriyorsa, tüm büyük arama motoru [google, yahoo + bing] url1 ile url2'nin yerini alacaktır.

302 farklı şekilde çalışır. URL'nin başka bir adreste temporarily bulunduğu belirtiliyor.

see this post