如果找不到文件,Apache .htaccess将重试其他目录

时间:2014-05-29 14:26:24

标签: apache .htaccess

我的apache webserver需要一个htaccess重写规则,如果找不到文件,则会在其他目录中搜索。

如果

http://domain.com/x.jpg
找不到

,请查看

http://domain.com/bla/x.jpg

如果没有那么请查看

http://domain.com/foo/x.jpg

等等。

我正在尝试以下但它不起作用。仍然给我404s

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*\.(gif|png|jpg|jpeg|apk|bmp|webp))$ /foo/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*\.(gif|png|jpg|jpeg|apk|bmp|webp))$ /bla/$1 [L]

1 个答案:

答案 0 :(得分:2)

你当前配置的问题在于,如果文件不存在而且第二次重写永远不会被执行,它总是会进行第一次重写。在进行重定向之前,您需要检查文件是否存在,如下面的

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)(/.+\.(gif|png|jpg|jpeg|apk|bmp|webp))$
RewriteCond %{DOCUMENT_ROOT}%1/bla%2 -f
RewriteRule . %1/bla%2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)(/.+\.(gif|png|jpg|jpeg|apk|bmp|webp))$ 
RewriteCond %{DOCUMENT_ROOT}%1/foo%2 -f
RewriteRule . %1/foo%2 [L]