リダイレクトする前に、コードが「今すぐリダイレクトしています....」というテキストを表示/印刷しないのはなぜですか。リダイレクトにjavascriptまたはhttp_redirect()を使用したくないことに注意してください。
<?php
ob_start();
echo "redirecting now ....";
sleep(3);
header("Location:index.html");
exit();
ob_end_flush();
?>
代わりにこれを使用してください
<?php
ob_start();
echo "redirecting now ....";
header("Refresh: 3; index.php");
exit();
ob_end_flush();
?>
これを試して
<?php
echo "redirecting now ....";
print "<META http-equiv='refresh' content='3;URL=index.html'>";
exit;
?>
そのコンテキスト(IMO)でob_start()を使用する理由は、header()の動作を妨げているヘッダーの前に避けられない出力がある場合です。
それが機能しない理由は、ob_start() がすべての出力をキャプチャーし (この場合は「redirecting now....」をエコーします)、ob_end_flush() まで出力しないためです。スクリプトが ob_end_flush() に到達する前に、header() を使用してページをリダイレクトしました。