Je kunt geen headers sturen nadat je al andere output richting de browser hebt gestuurd. In dit geval alle HTML boven dat stukje PHP.
Het is dan ook zeer ongewoon om HTTP headers (dat zijn het) te versturen terwijl de body van de request al wordt uitgeserveerd.
Toegevoegd na 1 minuut:
Alternatief is om de redirect met JavaScript uit te voeren op de plek waar je nu PHP hebt staan. Maar zoekmachines zullen dat negeren.
Als je de header() call boven de HTML zet, werkt het wel. Let wel, zoekmachines zullen dat zien als een paginaverhuizing.