Я пытаюсь перенаправить все сообщения 404 на страницу индекса, но только в определенных каталогах / категориях.
Например
404 в следующих каталогах будут отображаться как обычно
www.foo.com/
www.foo.com/blah
404 в следующем каталоге будут перенаправлены на index.php
www.foo.com/bar
www.foo.com/fizz/buzz
До сих пор я обнаружил, что следующее перенаправит все 404 на страницу индекса со статусом ОК.
error_page 404 =200 /index.html
Можно ли сделать этот каталог специально?
Как и в первом комментарии, error_page
может быть определен на уровне местоположения.
location ^~ /baz {
error_page /index.html;
}
Старый ответ или другой способ добиться этого: вам нужно использовать try_files для этот. Название очевидно. Nginx пытается открыть по заданному пути, если он существует. если не может найти, пробует следующее. Итак, ваше правило должно выглядеть так.