Насколько я знаю, у РНР есть какие-то проблемы во взаимодействии с апачем.
Для 400-х ErrorDocument работает, а для 500-х почему-то нет.
Но на самом деле это и не требуется. Все ошибки РНР прекрасно может обработать и сам.
Тем более, что заголовок вопроса представляет собой
оксюморон (не путать с известным говорителем слов под музыку).
Перенаправлять при возникновении
ошибки никуда
нельзя: потому что это
разные НТТР коды ответа. И хотя в тексте вопроса мы видим, что никакого перенаправления и не планировалось, но заголовок из песни не выкинешь.
Поэтому куда проще (и удобнее) настроить обработчик ошибок в РНР, и для 99.99% ошибок он будет показывать нужный HTML сам.
Для этого понадобятся функции set_exception_handler() и register_shutdown_function()
примеров реализации море, например здесь:
https://phpdelusions.net/articles/error_reporting#code
Только error handler на самом деле не нужен, потому что не фатальные ошибки не вызывают 500-ю ошибку и могут просто логироваться автоматом, без всякого хендлера.