Гы))) Пару раз приходилась разгребать подобные «элегантные решения», направляя все запросы, не относящиеся к файлам, в единую точку входа, осуществляя в ней их роутинг. Где вы раньше были? Можно же было оставить, как есть, сославшись на вас При использовании ErrorDocument сервер сам формирует заголовок с соотв. статусом. Максимум, что там нужно делать, так это уточнять причину ошибки. Далеко не все ошибки Web-сервер способен распознать самостоятельно, а коли все равно приходится делать обработку ошибок, почему бы это не делать единообразно в одной точке входа. Регулярка для обозначения любых строк элементарная (я обычно пишу^.*, хотя можно еще короче). Зато вообще не нужно писать директивы ErrorDocument. Ну и некропостер, причем даже не извинился.
В принципе можно попробовать использовать обработчик, указанный в ErrorDocument, как единую точку входа, если получится отменить или переопределить предопределенный сервером статус ошибки, когда происходит попадание в валидный адрес.
Для всех спорщиков могу предложить идеальное решение: Код (Text): location / { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /var/www/site.com/index.php; include /etc/nginx/fastcgi_params; } Гарантировано все запросы идут только на индекс. А статику на другой локейшн.
Соврешенно пофиг, будут в апаче загонять запрос в точку входа через еррордокумент или реврайт. Кому как нравится. Есть нюансы, конечно: еррордокумент отрабатывает, когда уже завершен uri->file мапинг, а мод-реврайт - до этого, но для большинства сайтиков это равноценно. К слову, в nginx тоже иногда используются return code + error_page code @point.
@askanim, и что тебя натолкнуло на эту сакральную мысль? --- Добавлено --- Я вот тоже склоняюсь к этому. Помню, что когда-то даже экспериментировал с ErrorDocument, но т.к. у меня никто mod_rewrite и т.п. не отнимал, остановился на более распространенном варианте. Кто ж думал, что через н-ное кол-во лет встречу чел-а, которому регулярки в правилах религия не позволяет использовать.