Apache2 ruft Dateien aus einem anderen Ordner ab, wenn sie nicht gefunden werden

Apache2 ruft Dateien aus einem anderen Ordner ab, wenn sie nicht gefunden werden

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, RewriteCondaber etwas anderes verwendet RewriteRule, mit dem möglicherweise einfacher gearbeitet werden kann.

Wie Sie vielleicht bemerken, versucht die erste referenzierte Antwort, Nginx try-filesin 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.

verwandte Informationen