Muszę napisać regułę przepisywania dla Nginx, aby jeśli użytkownik spróbował przejść do starego adresu URL obrazu:
/images/path/to/image.png
a plik nie istnieje, spróbuj przekierować do:
/website_images/path/to/image.png
TYLKO jeśli obraz istnieje w nowym adresie URL, w przeciwnym razie kontynuuj z 404. Wersja Nginx na naszym hoście nie ma jeszcze plików try_files.
Nie używaj
if
wewnątrz bloku lokalizacji. Mogą się zdarzyć złe rzeczy.$1
staje się nazwą pliku do wypróbowania w dyrektywie try_files, która jest stworzona do tego, co próbujesz osiągnąć.To, LUB, po prostu przepisz to bez sprawdzania. Jeśli tego obrazu nie ma, i tak otrzymasz 404.
źródło
try_files
nie”), dla przyszłych odwiedzających tutaj, odpowiedź ta zasługuje na więcej głosów pozytywnych.Możesz użyć czegoś takiego (niesprawdzonego w konkretnym przypadku):
Który jest w zasadzie alternatywnym sposobem pisania
if
instrukcji zagnieżdżonych , ponieważ nie można zagnieżdżać się w Nginx. Zobacz tutaj oficjalne odniesienia do tego „hacka”.źródło