2009-10-15 9 views
10

すべての履歴/キャッシュを完全に削除するPHPのページをリロード/リダイレクトするにはどうすればよいですか?どのヘッダを使うべきですか?何が起こるPHPのリダイレクト/リロードの最善の方法

をリンクをクリックするとは、取得パラメータが設定され、スクリプトが実行されます。終了したら、取得パラメータなしでページをリダイレクトしてリロードします。最初は何も起こっていないように見えますが、F5キーを押すと変更が表示されます。

私が欲しいもの

リダイレクトや変更がF5キーを押さずに表示されますので、リロードします。

+0

あなたはより具体的にする必要があります。あなたは歴史の中でどのページを見たくないですか?あなたが呼んでいるもの、またはあなたがリダイレクトしているもの?同じことがキャッシュになります。 –

答えて

3

これを試してみてください:

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

これは、ブラウザの履歴ではなく、キャッシュを交換する必要があります。

7

ページをリロードしてキャッシュから取り出さないようにする最良の方法は、urlの最後にランダムなIDまたはタイムスタンプをクエリーストリングとして付加することです。これは毎回要求を一意にします。

+0

これは最善の方法ですが、これを行うのは奇妙です。 想像してみてください:www.google.com.br?randomId=12381289371 最も適切な方法は適切なヘッダーを送信することです。 – Ismael

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

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

編集:

のCache-Controlによって示さ 又はヘッダフィールドを満了した場合、この応答は、唯一のキャッシュ可能です。

+1

302が正しいです。おめでとう。 – Cesar

+0

これはちょうど私が必要だったものです。私はこの質問とはまったく異なる何かをしていましたが、答えはすばらしく働いていました。 – Jake

+0

使い方が良いです: header( "Cache-Control:no-cache");header( '場所:http://www.example。com/'、true、302)。 exit; –

0

最も安全な方法は、それが他の出力がブラウザに送信される前に送らなければならないこと、ヘッダーリダイレクト

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

を使用しかし、注意してくださいすることです。ただSEOに関連する情報、について

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

この回答はありがとう@Phill。あなたはこの機能を使って私に多くの時間を節約しました。 –

+0

Hm。コーダーは、リダイレクトするタイプを特定の状況で使いたいと決めるべきだと思っています。例えば。 'location'経由でHTTPリクエストをしたいのであれば、フォールバックを使うのではなく、ヘッダがまだ送信されていないことを確認する必要があります。それは私が少なくとも考えている方法です – Kos

1

301は、そのインデックスにURLを置き換えるために検索エンジンを言うだろう。したがって、url1が301でurl2にリダイレクトされると、すべての主要な検索エンジン[google、yahoo + bing]はurl1をurl2に置き換えます。

302は別の方法で動作します。 URLはtemporarilyにあります。

see this post

関連する問題