Нестандартная обработка 404 ошибки?

При переносе проекта с nginx на apache возникла необходимость хитро обрабатывать 404 ошибку.

Поясню:

на nginx в nginx.conf присутствовал следующий редирект:

#Приватный локейшен для отдачи файлов слоев Dojo. В случае если файл<br/>
 #слоя отсутствует. Заменяем код ответа с 404(файл не найден) на код<br/>
 #200 и перенаправляем на приватный локейшен для генерации пустого файла<br/>
 #слоя<br/>
 location ^~ /jsLayers/<br/>
 {<br/>
 internal;<br/>
 alias $serverRoot/resources/js/$jsCurrentFolder/layers/;<br/>
 error_page 404 =200 /emptyLayer.js;<br/>
 }


т.е. если какой-либо из файлов по маске не найден, отдается определенный файл и код ответа заменяется на 200


Использовать стандартный ErrorDocument нельзя, поскольку для файлов в других папках должна корректная 404 отдаваться ну и плюс в ErrorDocument мы не можем изменить код ответа на 200.

Смотрю в сторону RewriteCond и RewriteRule c последующим редиректом с кодом 200 (не знаю, корректно ли), однако не могу найти переменную которая бы отвечала за код ответа сервера (чтобы его перехватить)


Я не прошу готовое решение. Думаю, если бы просто указали в какую сторону копать, ответ бы и сам нашел.

Буду благодарен за советы.
  • Вопрос задан
  • 3857 просмотров
Решения вопроса 1
difiso
@difiso
В параллельной вселенной я космонавт
Mod_Rewrite, на мой взгляд, вполне уместно.

Испольуйте в RewriteCond проверку на несуществование файла (маской, если несколько), а в RewriteRule как раз в этом случае перенаправлять на /emptyLayer.js с кодом 200.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы