Вы не выполняете 404 ошибки как перенаправление вообще.
Что вы действительно хотите сделать, это отправить заголовок состояния 404, а затем заменить текущий вывод телом страницы 404.
Существуют различные способы сделать это, и это в значительной степени зависит от структуры вашего сайта. Приложения MVC обычно передают это вперед. Я видел другие системы, которые выдают исключение, а затем зарегистрированный обработчик исключений заботится об отображении страницы 404.
Во всяком случае, грубые шаги
- Определить содержание недействительным
- Выход из текущего исполнения
- Очистить все выходные данные, если они есть.
- Отправить заголовок статуса 404
- Отправьте содержимое страницы 404