web-dev-qa-db-ja.com

PHP)でページをリダイレクト/リロードする最良の方法

PHPでページをリロード/リダイレクトするための最良の方法は何ですか?これはすべての履歴/キャッシュを完全に削除しますか?どのヘッダーを使用する必要がありますか?

何が起こるのですか:

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

私が欲しいもの:

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

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

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

編集:

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

26
Ismael
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);
24
Phill Pafford

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

7
rahul

これを試して:

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

これはブラウザの履歴を置き換える必要がありますが、キャッシュは置き換えません。

3
jerjer
header('Location: http://example.com/path/to/file');
1
knittl

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

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

302は異なる方法で機能します。 URLは他のアドレスのtemporarilyにあると書かれています。

この投稿を参照

1
user3526

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

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

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

0
clops