Apache-2.2

如果文件夾中不存在文件,如何從根目錄重寫 URI?

  • March 25, 2015

我有一個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>

如果我理解正確,您正在嘗試模擬 Nginx 的功能,在這種try_files情況下,它看起來可能對您有用。

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

來自 Apache 文件:Redirecting and Remapping with 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]

引用自:https://serverfault.com/questions/678243