Назад | Перейти на главную страницу

Как переписать URI из корня, если файла нет в папке?

у меня есть 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>

Из документов 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]

Если я правильно понимаю, вы пытаетесь подражать Nginx try_files функциональность, и в этом случае это выглядит как возможно этот будет работать на вас.

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