redirect()302 を無視すると、出力が停止することがわかりますが、停止header()しません。redirect()を使用header()して 302 応答を設定します。異なる動作、同じ機能。何を与える?
いくつかのコンテキスト: CodeIgniter を使用してサイトを構築しており、サイトがゲストとメンバーをどのように扱うべきかを考えています。
CI コアの拡張:
class MY_Controller extends CI_Controller {
    if (! $authenticated) redirect('/login');
}
今コントローラ:
class Members_only extends MY_Controller {
    function index()
    {
    // Display members only content
    }
}
次に、アリス (認証されていない訪問者) が 302 応答を無視した場合はどうなるだろうかと考えました。リダイレクト後に残りのコンテンツを見ることができますか? それで私はそれをテストしました、そして今私は完全に混乱しています。302 リダイレクトを送信するために使用できる関数が 2 つあります。
header('Location: http://mywebsite.com/login', TRUE, 302);
CI の URL ヘルパーから:
redirect('/login');
内側から見るとこんな感じ。
function redirect($uri = '', $method = 'location', $http_response_code = 302)
{
    if ( ! preg_match('#^https?://#i', $uri))
    {
        $uri = site_url($uri);
    }
    switch($method)
    {
        case 'refresh' : header("Refresh:0;url=".$uri);
                         break;
        default        : header("Location: ".$uri, TRUE, $http_response_code);
                         break;
    }
    exit;
}
site_url()「http://mywebsite.com/login」を返しています。
誰かが私がここで見逃していることを指摘できますか?