Это уже логика работы Apache. Фактически цепочка: браузер посылает запрос апачу, апачь считывает физический файл на диске сервера, выбирает интерпретатор, например php, передает ему файл, после выполнения результат отдает браузеру пользователя, если физически файла к которому обращается пользователь не существует, переправляет на соответствующий ErrorDocument 404 /....
В ситуации с использованием к примеру Mod_rewrite, мы строим псевдо-URL структуру и Apache напрямую несуществующие директории обрабатывать не может. Есть вариант перекидывать принудительно на созданную страницу Ошибки 404, тем же header ("Location: ...."), но в таком случает в логах Apache не будет фиксироваться ошибка 404. Есть конечно мысль использовать изначально:
header("HTTP/1.0 404 Not Found");
fopen()...
exit;
(но не срабатывала)
83.XXX.105.XXX - - [24/Jun/2007:16:47:59 +0400] "GET /index5.php HTTP/1.1" 404 5
83.XXX.105.XXX - - [24/Jun/2007:16:48:36 +0400] "GET /index555.php HTTP/1.1" 404 3314
UPD.
Так вот, моим дорогим юморным друзьям. Проблема решена и с сводилась к ограничениям на минимальный размер информации, которую будет обрабатывать Apache для ошибки 404.