Apache 如果找不到文件,请重试其他目录
我需要为我的apache Web服务器提供一个htaccess重写规则,如果没有找到文件,该规则将在其他目录中搜索 如果 找不到,请查看Apache 如果找不到文件,请重试其他目录,apache,.htaccess,Apache,.htaccess,我需要为我的apache Web服务器提供一个htaccess重写规则,如果没有找到文件,该规则将在其他目录中搜索 如果 找不到,请查看 http://domain.com/bla/x.jpg 如果没有,那就进去看看 http://domain.com/foo/x.jpg 等等 我正在尝试以下方法,但不起作用。还是给我404 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]*\.(gif|png|jpg|jpeg|apk|bmp|w
http://domain.com/bla/x.jpg
如果没有,那就进去看看
http://domain.com/foo/x.jpg
等等
我正在尝试以下方法,但不起作用。还是给我404
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]
当前配置的问题是,如果文件不存在,它总是执行第一次重写,而第二次重写永远不会执行。在执行如下重定向之前,您需要检查文件是否存在
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]
这是复制品吗@我想这是重复的。很好的发现。如果我尝试一下另一个问题中的建议,我会得到一个答案404@clamp当前位置演示您如何尝试回答另一个问题,您可能遗漏了一些内容。但这个答案似乎是正确的,如果您不添加详细信息,您的问题将以重复的形式结束。@regilero我已经发布了我正在尝试的内容。谢谢,但这给了我一个internatl服务器错误。目录名后面不应该有另一个斜杠吗?在我的测试中,请求URI的第一个字符是正斜杠,所以不需要它。是否从根目录或子目录重定向?该代码仅适用于根目录。如果您需要它在子目录中工作,我可以修改它,它应该在根目录中工作,但是查找目录可以由几个目录组成。e、 g./foo/bar/test/bla/从根目录开始。我没有意识到它适用于所有目录。将相应地修改是的,我原来的答案似乎有一个额外的)。但我已经相应地更新了,看看这是否有效
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]