Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如果找不到文件,请重试其他目录_Apache_.htaccess - Fatal编程技术网

Apache 如果找不到文件,请重试其他目录

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

我需要为我的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|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]