10

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

何が起こるのですか:

リンクをクリックすると、get-parameters が設定され、スクリプトが実行されます。終了したら、get-parameters なしでページをリダイレクトしてリロードします。最初は何も起きていないように見えますが、F5 を押すと変化が現れます。

私が欲しいもの:

F5 キーを押さなくても変更が表示されるように、リダイレクトしてリロードします。

4

8 に答える 8

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

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

編集:

この応答は、Cache-Control または Expires ヘッダー フィールドで示されている場合にのみキャッシュ可能です。

于 2009-10-15T12:17:44.363 に答える
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);
于 2009-10-15T12:42:54.900 に答える
7

ページをリロードしてキャッシュから取得しないようにする最善の方法は、クエリ文字列として URL の末尾にランダムな ID またはタイムスタンプを追加することです。リクエストを毎回一意にします。

于 2009-10-15T12:15:06.487 に答える
3

これを試して:

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

これにより、ブラウザの履歴が置き換えられますが、キャッシュは置き換えられません。

于 2009-10-15T12:14:02.327 に答える
1

SEOに関連する情報のためだけに:

301は、検索エンジンにインデックスのurlを置き換えるように指示します。したがって、url1が301でurl2にリダイレクトしている場合、すべての主要な検索エンジン[google、yahoo+bing]はurl1をurl2に置き換えます。

302は異なる方法で機能します。URLがtemporarily他のアドレスにあると表示されます。

この投稿を参照してください

于 2012-10-19T07:49:42.333 に答える
1
header('Location: http://example.com/path/to/file');
于 2009-10-15T12:17:24.270 に答える
0

最も安全な方法は、ヘッダー リダイレクトを使用することです

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

ただし、他の出力がブラウザに送信される前に送信する必要があることに注意してください。

于 2009-10-15T12:41:07.133 に答える