我有一个static
文件夹不在我的文档根目录中。我想重定向所有不在文档根目录中但存在于静态文件夹中的文件。(因此,如果同一个文件在两个地方,则将首先提供不在静态文件夹中的文件。)我该怎么做?以下方法不起作用:
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>
答案1
如果我理解正确的话,你正在尝试模拟 Nginx 的try_files
功能,在这种情况下,看起来可能这将为您服务。
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
答案2
来自 Apache 文档:使用 mod_rewrite 进行重定向和重新映射“在多个目录中搜索页面”部分,例如:
# 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]