Заголовки, отправляемые PHP, в данном случае имеют значение только для браузера. Apache не собирается создавать свою собственную страницу, потому что вы уже обрабатываете страницу, и если вы что-то отправили, эти два будут конфликтовать.
Да, файл .htaccess
не позволит Apache отображать страницу с ошибкой, поскольку ваши правила заставляют Apache думать, что у него больше нет ошибки 404
, потому что он нашел страницу для показа.
Отправка заголовка на самом деле является только «сообщением о состоянии» и не заставляет браузер или сервер отображать определенную страницу. (Хотя большинство браузеров будут).
Как отметил Дав в комментариях, вы захотите отправить 404 ошибки на их собственную страницу ошибок.