PHPでページをリロード/リダイレクトするための最良の方法は何ですか?これはすべての履歴/キャッシュを完全に削除しますか?どのヘッダーを使用する必要がありますか?
何が起こるのですか:
リンクをクリックすると、get-parametersが設定され、スクリプトが実行されます。終了したら、get-parametersなしでページをリダイレクトしてリロードしたいと思います。最初は何も起こらなかったように見えますが、F5を押すと変化が現れます。
私が欲しいもの:
F5キーを押さなくても変更が表示されるように、リダイレクトしてリロードします。
header('Location: http://www.example.com/', true, 302);
exit;
参照: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
編集:
この応答は、Cache-ControlまたはExpiresヘッダーフィールドで示された場合にのみキャッシュ可能です。
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);
ページをリロードしてキャッシュから取得されないようにする最善の方法は、ランダムなIDまたはタイムスタンプをURLの末尾にクエリ文字列として追加することです。リクエストは毎回一意になります。
これを試して:
echo '<script>document.location.replace("someurl.php");</script>';
これはブラウザの履歴を置き換える必要がありますが、キャッシュは置き換えません。
header('Location: http://example.com/path/to/file');
sEOに関連する情報のためだけに:
301は、検索エンジンにインデックスのurlを置き換えるように指示します。したがって、url1が301でurl2にリダイレクトしている場合、すべての主要な検索エンジン[google、yahoo + bing]はurl1をurl2に置き換えます。
302は異なる方法で機能します。 URLは他のアドレスのtemporarily
にあると書かれています。
最も安全な方法は、ヘッダーリダイレクトを使用することです
header('Location: http://www.example.com/', true, 302);
exit;
ただし、他の出力がブラウザに送信される前に送信する必要があることに注意してください。