如果在文件夹中不存在文件,如何从根重写URI?

我有一个不在我的文档根目录的static文件夹。 我想redirect所有不存在于文档根目录但存在于静态文件夹中的文件。 (所以如果同一文件在两个地方,那么不在静态的文件将首先被提供。)我该怎么做? 以下不起作用:

 DocumentRoot /srv/app/client/build/ Alias / /srv/app/client/static RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/ RewriteRule ^(.*)$ /$1 <Location /> Order allow,deny Allow from all </Location> 

如果我理解正确的话,你试图模仿Nginx的try_filesfunction,在这种情况下,它看起来可能会适用于你。

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

从Apache文档: 使用mod_rewriteredirect和重映射 “在多个目录中search页面”部分,如下所示:

 # first try to find it in root/... # ...and if found stop and be happy: RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f RewriteRule ^(.+) %{DOCUMENT_ROOT}/$1 [L] # second try to find it in static/... # ...and if found stop and be happy: RewriteCond %{DOCUMENT_ROOT}/static/%{REQUEST_URI} -f RewriteRule ^(.+) %{DOCUMENT_ROOT}/static/$1 [L]