我的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]
答案 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]