Во время работы над перезаписью приложения я хотел бы сохранить старые файлы веб-корневого каталога приложения в качестве запасного варианта, когда новые файлы не будут найдены.
Есть 2 приложения:
<VirtualHost *:80>
ServerName legacy.dev
DocumentRoot /www/legacy/webroot
</VirtualHost>
<VirtualHost *:80>
ServerName new.dev
DocumentRoot /www/new/webroot
</VirtualHost>
Как я могу настроить new.dev VirtualHost для получения файлов, присутствующих в DocumentRoot, но если файл не найден, получить файлы в legacy.dev DocumentRoot?
Это звучит как Что такое Apache-эквивалент try_files Nginx? будет делать то, что вы хотите.
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
пытается найти файл и, если не находит, передает его прокси-серверу apache. Apache: мод-перезапись для поиска отсутствующих изображений в другом каталоге показывает аналогичный пример использования mod_rewrite для выполнения чего-то подобного без проксирования. Как видите, он использует аналогичный RewriteCond
но совсем другой RewriteRule
с которым может быть легче работать.
Как вы можете заметить, первый упомянутый ответ пытается взломать nginx try-files
в apache, так что, может быть, в этом случае вам больше понравится nginx. Как работает try_files? должен дать вам лучшее представление, если это поможет вам.