Из того, что я понимаю, вы переписываете все файлы в один файл PHP, чтобы PHP мог читать его и делать то, что ему нужно для обслуживания страницы.Это означает, что обработка Apache 404 страниц будет, по сути, переопределена.На этом этапе ваш файл PHP должен обслуживать страницу или отображать 404. Насколько Apache знает, запрос привел к HTTP-коду 200, потому что он не играет никакой роли после того, как он запускает PHP для анализасценарий и передать вывод клиенту, который его запросил.
В вашем скрипте PHP вы будете проверять, существует ли страница или нет.Если страница существует, покажите страницу, в противном случае дайте сообщение 404.Поместив header("HTTP/1.0 404 Not Found", true);
в ваш PHP-файл в точку, где вы знаете, что это 404, он отправит заголовок 404 клиенту, и, следовательно, все было сделано правильно.Чтобы убедиться, что он отправляется правильно, запустите 404 (введя фиктивный URL) и просмотрите детали запроса в инструментах Chrome Developer. В заголовках ответа вы должны увидеть, что вам отправляется 404, а в журналах Apache отображается 200.