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();
header('Location: vnd.youtube:xjTEqVQVsQs'); 
ob_end_flush();
?>

リダイレクトページのみの場合は、上記のphpコードを除くすべてのhtmlを削除してください。

于 2012-09-18T09:46:14.270 に答える
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 に答える
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 に答える
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
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 に答える