Apache2 在未找到文件时从另一个文件夹检索文件

Apache2 在未找到文件时从另一个文件夹检索文件

在重写应用程序时,当找不到新文件时,我想保留旧的应用程序 webroot 文件作为后备。

有 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 中的文件?

答案1

这听起来像Apache 与 Nginx 的 try_files 等效的是什么?会做你想做的事。

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]

尝试查找该文件,如果找不到,则将其传递给 apache 代理。 Apache:mod-rewrite 在另一个目录中查找丢失的图像显示了一个类似的示例,使用 mod_rewrite 执行类似操作而无需代理。如您所见,它使用了一个类似RewriteCond但相当不同的RewriteRule方法,可能更容易使用。

正如您可能注意到的,第一个引用的答案是尝试将 nginx 破解try-files到 apache 中,因此在这种情况下,您可能更愿意直接使用 nginx。 try_files 如何工作?应该会给你一个更好的想法,如果这对你有帮助的话。

相关内容