Это потому, что вы должны сначала установить заголовки, а затем добавить любые выходные данные.
Если вы ничего не отображали или выводили на печать, убедитесь, что у вас нет предупреждений или уведомлений (счет также выводится, если у вас естьсообщение об ошибке).
В качестве хорошей практики поместите вызовы заголовков в верхнюю часть вашего скрипта.
Вы также можете взглянуть на буферизацию вывода, если вам нужногенерировать вывод перед заголовками.