PHP Redirect Header funktioniert nicht


Um Seiten SEO-freundlich umzuleiten, kann man in PHP einen 301 Redirect machen_

header("Location: http://www. new-location.de/foo_new.php",true,301);
exit;

Ich hatte dabei das Problem, das keine Fehlermeldung “Header already sent” ausgegeben wurde, um herauszufinden, warum der Befehl nicht funktioniert. Es ist nämlich so, dass der header() Befehl nur funktioniert, wenn noch keine Bildschirmausgabe stattgefunden hat. Das betrifft auch Leerzeichen, wie sie oft bei PHP-Dateien vorkommen am Anfang oder Ende des Quellcodes:

_<?php

oder

?>_

Um diesen Stellen zu finden sollte man vor dem Redirect folgenden Code einfügen, wenn man keine Fehlermeldung “header already sent in line”bekommt:

    if(headers_sent($file, $line)){
        echo "Headers already sent in $file on line $line";
    }