Необходимо настроить Nginx так, чтобы любой URL адрес, который не найден, идет по альтернативному пути, с внутренним перенаправлением (не меняется/не перенаправляется адрес в броузере). Эквивалент в Apache строка:
FallbackResource /path/to/fallbackdirectory/fallbackhandler.ext (ext can be php, py, jsp, c etc.)
Допустим альтернативный путь: http://appservers/fallbackdirectory/fallbackhandler.php
server{
listen 80;
index index.html index.htm index.php;
server_name www.test.com
location / {
# допустим http://appservers/www/ есть www.test.com в броузере
proxy_pass http://appservers/www/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Адрес сайта - http://www.test.com. Все, что вбивается после этого пути если не найдено должно попадать в альтернативный путь (внутреннее перенаправление, означающее никакого изменения в адресе или перенаправления в адресной строке броузера).
Альтернативный путь дан выше: (http://appservers/fallbackdirectory/fallbackhandler.php) который нужно настроить в Nginx конфиге.
Например, когда кто-то открывает адрес http://www.test.com/not_existing_directory/ и not_existing_directory не существует, нужно попасть в альтернативный путь и при этом сохранить http://www.test.com/not_existing_directory/ в адресной строке браузера.
Если директория существует, например, http://www.test.com/existing_directory/ тогда никаких изменений не должно производиться. Должно происходить обычное поведение - попадаем в существующие директории и файлы. Необходимый конфиг альтернативного пути необходим только для файлов и директорий, которые не существуют.
Это лишь пример, он может быть в несколько уровней тоже, например http://www.test.com/dir1/dir2/dir3/ или http://www.test.com/dir1/not_existing.php и т.д.
Все, что не найдено должно попадать в альтернативный путь, приведенный выше.
NB: Необходимо это сделать в настройках reverse-proxy