在PHP中重定向/重新加载页面的最佳方法

jor*_*gen 10 php redirect reload

什么是在PHP中重新加载/重定向页面的最佳方法,它完全删除了所有历史记录/缓存?我应该使用哪些标题?

怎么了:

单击链接时,将设置get-parameters并执行脚本.完成后,我想重定向并重新加载没有get参数的页面.起初,它看起来没有发生任何事情,但是当按下F5时,会出现更改.

我想要的是:

重定向并重新加载,以便在不按F5的情况下显示更改.

Ism*_*ael 26

header('Location: http://www.example.com/', true, 302);
exit;
Run Code Online (Sandbox Code Playgroud)

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

编辑:

如果由Cache-Control或Expires头字段指示,则此响应仅可缓存.


Phi*_*ord 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);
Run Code Online (Sandbox Code Playgroud)


rah*_*hul 7

重新加载页面并强制不从缓存中获取的最佳方法是将随机ID或时间戳作为查询字符串追加到URL的末尾.它使请求每次都是唯一的.


jer*_*jer 3

尝试这个:

echo '<script>document.location.replace("someurl.php");</script>';
Run Code Online (Sandbox Code Playgroud)

这应该替换浏览器历史记录,但不会替换缓存。