在处理应用程序重写时,我想保留旧的应用程序webroot文件作为回退,当没有find新的文件。
有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相当于Nginx的try_files? 会做你想做的。
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
试图寻找文件,如果它没有find它传递给Apache代理。 Apache:mod-rewrite在另一个目录中查找丢失的图像显示了一个类似的例子,使用mod_rewrite去做类似的事情,而不需要代理。 正如你所看到的,它使用了一个类似的RewriteCond但是一个相当不同的RewriteRule可能更容易处理。
正如你可能注意到的第一个引用的答案是试图破解nginx的try-files到Apache中,所以也许你会更乐意直接在这种情况下nginx。 try_files如何工作? 应该给你一个更好的主意,如果这会帮助你。