Nel 99% dei casi, esperienzapersonale, header ('location:xxx') non funziona per colpa di un qualcosa che hai stampato PRIMA di invocare il cambio di header, molto spesso il problema è difficile da capire perchè anche un a capo vuoto o uno spazio bianco causa l'errore.