
Während ich an der Neufassung einer Anwendung arbeite, möchte ich die alten Webroot-Dateien der App als Fallback behalten, falls die neuen Dateien nicht gefunden werden.
Es gibt 2 Anwendungen:
<VirtualHost *:80>
ServerName legacy.dev
DocumentRoot /www/legacy/webroot
</VirtualHost>
<VirtualHost *:80>
ServerName new.dev
DocumentRoot /www/new/webroot
</VirtualHost>
Wie kann ich den new.dev VirtualHost so einrichten, dass er die im DocumentRoot vorhandenen Dateien abruft, aber, falls die Datei nicht gefunden wird, die Dateien im legacy.dev DocumentRoot abruft?
Antwort1
Das klingt nachWas ist das Apache-Äquivalent zu den try_files von Nginx?würde tun, was du willst.
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
versucht, nach der Datei zu suchen und leitet sie, wenn sie nicht gefunden wird, an den Apache-Proxy weiter. Apache: Mod-Rewrite zum Nachschlagen fehlender Bilder in einem anderen Verzeichniszeigt ein ähnliches Beispiel für die Verwendung von mod_rewrite, um etwas Ähnliches ohne Proxying zu tun. Wie Sie sehen, wird ein ähnliches, RewriteCond
aber etwas anderes verwendet RewriteRule
, mit dem möglicherweise einfacher gearbeitet werden kann.
Wie Sie vielleicht bemerken, versucht die erste referenzierte Antwort, Nginx try-files
in Apache zu hacken. Vielleicht wären Sie in diesem Fall mit Nginx direkt zufriedener. Wie funktioniert try_files?sollte Ihnen eine bessere Vorstellung geben, falls Ihnen das helfen würde.