据我所知,只要数据已发送到浏览器,就无法修改标题。
有没有办法(使用PHP)我可以执行重定向将用户带到另一个页面(显然不使用标题)
如果是这样,请指点我一些文件?
答案 0 :(得分:32)
决定编写自己的php函数,实现javascript重定向。请参阅下面的代码。
function redirect($url)
{
$string = '<script type="text/javascript">';
$string .= 'window.location = "' . $url . '"';
$string .= '</script>';
echo $string;
}
答案 1 :(得分:6)
您可以使用Javascript或Meta标签。但是,如果您不希望修复代码以在处理后显示输出,那么只需打开该站点的.htaccess文件中的output_buffering
即可。
php_flag output_buffering on
您要将.htaccess文件中的内容打开。即使您在处理过程中输出内容,它也会允许重定向。这是因为输出缓冲区将缓冲区保存到最后,因此在。之前没有数据发送。
答案 2 :(得分:4)
我认为输出缓冲不是一种选择,因为你提到数据已被发送。使用元重定向,或输出处理此问题的JavaScript。
前者可以通过将以下内容添加到<head>
部分
<meta http-equiv="refresh" content="0; url=http://example.com/">
对于后者,写下以下内容可能会有所帮助:
<script type="text/javascript">
window.location = "http://example.com/";
</script>
将http://example.com/替换为您的目标网址。请注意,如果确实已经发送了一些数据,则后者可能更难实施。
警告:这两种方法都可以在客户端阻止,但从技术上讲,301和302可以重定向。
答案 3 :(得分:3)
在您决定重定向网页之前,也许可以使用output buffer。
恕我直言,否则只有使用HTML元重定向或JavaScript重定向的方法。
答案 4 :(得分:1)
这是我用来重定向的php函数。如果未发送标题,则使用“标题(位置)”,否则使用javascript函数。
function redirect($url)
{
$baseUri=_URL_;
if(headers_sent())
{
$string = '<script type="text/javascript">';
$string .= 'window.location = "' . $baseUri.$url . '"';
$string .= '</script>';
echo $string;
}
else
{
if (isset($_SERVER['HTTP_REFERER']) AND ($url == $_SERVER['HTTP_REFERER']))
header('Location: '.$_SERVER['HTTP_REFERER']);
else
header('Location: '.$baseUri.$url);
}
exit;
}
答案 5 :(得分:1)
在我的案例中工作 ob_start
Javascript解决方案看起来如此......奇怪
答案 6 :(得分:0)
PHP doe不提供任何其他方式,据我记得(http协议的限制),但你可以用javascript做到这一点,但它是一个完全不同的过程:使用js,它是页面的内容告诉浏览器执行重定向,而不是服务器。