web-dev-qa-db-ja.com

ファイルがフォルダに存在しない場合、ルートからURIを書き換える方法は?

ドキュメントルートにないstaticフォルダがあります。ドキュメントルートには存在しないが、静的フォルダには存在するすべてのファイルをリダイレクトしたいと思います。 (したがって、同じファイルが2つの場所にある場合、静的にないファイルが最初に提供されます。)これを行うにはどうすればよいですか?以下は機能しません。

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
Dimitri Kopriwa

私が正しく理解している場合、あなたはNginxのtry_files機能をエミュレートしようとしています。その場合、おそらく this が機能するように見えます。

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

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]
1
Brian