Можно включить буферизацию вывода в самом начале
<?php
через
ob_start();
Тогда можно перемешать контент и заголовки в коде
Крайне не рекомендую так делать, и правильное решение - чётко разделить http-заголовки и содержимое. То есть сперва понять что мы хотим отправить 200 или 404. Отправить заголовки, а потом отправить html-контент.
<?php
ob_start();
?>
<html>
<body>
бла
бла
бла
<?php
http_response_code(404);
?>
бла
бла
бла
</body>
</html>