0

我目前有一个非常简单的页面,可以重定向到另一个 URL。但是由于某种原因,我无法让它工作。

我相信这个问题有一个非常简单的解决方案,任何帮助我理解到底发生了什么都将不胜感激。

这是我的页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test - Youtube</title>
</head>
<body>
    <?php 
    ob_start();
    header('Location: vnd.youtube:xjTEqVQVsQs'); 
    ob_end_flush();
    ?>
</body>
</html>

谢谢

4

5 回答 5

1

在发送标头之前,您的页面上有一些输出,这就是您无法重定向的原因,您应该像这样使用输出缓冲:

<?php

ob_start();

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test - Youtube</title>
</head>
<body>

<?php 

header('Location: vnd.youtube:xjTEqVQVsQs');
die();

?>

</body>
</html>

<?php

ob_end_flush();

?>
于 2012-09-18T09:48:00.373 回答
1
<?php 
ob_start();
header('Location: vnd.youtube:xjTEqVQVsQs'); 
ob_end_flush();
?>

如果它只是一个重定向页面,则删除除上述 php 代码之外的所有 html。

于 2012-09-18T09:46:14.270 回答
0

由于重定向将标头发送到浏览器,因此必须在任何输出之前发送它。您可以使用以下方法使用不同的方法进行重定向,具体取决于是否已发送标头:

<?php
function redirect($filename) {
    if ( ! headers_sent())
        header('Location: '.$filename);
        exit; // just a good practice to EXIT after redirecting
    else {
        echo '<script type="text/javascript">';
        echo 'window.location.href="'.$filename.'";';
        echo '</script>';
        echo '<noscript>';
        echo '<meta http-equiv="refresh" content="0;url='.$filename.'" />';
        echo '</noscript>';
    }
}
redirect('http://www.google.com');
?>

如果标头已经发送,这将回退到使用 javascript。

如果你想使用header()方法,它必须在任何其他输出(包括空格)之前位于代码的顶部。

于 2012-09-18T09:55:40.393 回答
0

您应该删除除 PHP 脚本之外的所有页面内容:

<?php 
ob_start();
header('Location: vnd.youtube:xjTEqVQVsQs'); 
ob_end_flush();
?>

或者

将您的 PHP 脚本放在页面顶部:

<?php 
    ob_start();
    header('Location: vnd.youtube:xjTEqVQVsQs'); 
    ob_end_flush();
?>

确保上面的 php 标记之前没有空格。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test - Youtube</title>
</head>
<body>
</body>
</html>
于 2012-09-18T09:51:40.090 回答
0

这就是代码的样子:

   <?php 
    ob_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test - Youtube</title>
    </head>
    <body>
    <?php
    header('Location: vnd.youtube:xjTEqVQVsQs'); // Are you sure that's the right 
address?
    ?>
    </body>
    </html>
    <?php
    ob_end_flush();
    ?>

无论如何,页面正在重定向到另一个页面,为什么需要 html 标签?

于 2012-09-18T09:46:08.623 回答