Apache 如果在当前文件夹htaccess中找不到文件,则显示一个文件夹的文件

Apache 如果在当前文件夹htaccess中找不到文件,则显示一个文件夹的文件,apache,.htaccess,redirect,Apache,.htaccess,Redirect,我想编写一个简单的.htaccess脚本来执行以下任务: 有一个文件夹,其中包含文档http://www.website.com/files/documents/ 此文件夹包含一些名为的子文件夹,如图像、工作表、文本等。 主文件夹和子文件夹中都可以有一些文档 必须发生以下情况: 用户请求http://www.website.com/files/documents/images/image1.jpg 并且文件不存在->用户被重定向到一个目录,最多http://www.website.com/fil

我想编写一个简单的.htaccess脚本来执行以下任务:

有一个文件夹,其中包含文档http://www.website.com/files/documents/ 此文件夹包含一些名为的子文件夹,如图像、工作表、文本等。 主文件夹和子文件夹中都可以有一些文档 必须发生以下情况:

用户请求http://www.website.com/files/documents/images/image1.jpg 并且文件不存在->用户被重定向到一个目录,最多http://www.website.com/files/documents/image1.jpg 文件存在的位置

用户请求http://www.website.com/files/documents/sheets/excel.xls 并且文件不存在->用户被重定向到一个目录,最多http://www.website.com/files/documents/excel.xls

注意:它应该对所有文件夹名有效,并且与路径数无关

例如:

www.example.com/one/two/three/four/3.jpg

www.example.com/one/two/three/2.jpg

www.example.com/one/two/three/four/five/4.jpg

以下是我尝试的代码:

它适用于2级文件夹,但不适用于3级或更多文件夹

www.example.com/one/two/1.jpg=>有效

www.example.com/one/two/three/2.jpg=>不起作用


www.example.com/one/two/three/four/3.jpg=>不起作用,等等…

我不认为你想让你的正则表达式变成ungreedy,你想让它吃掉所有的文件夹直到最后一个。尝试:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/)?[^/]+/([^/]+)$ $1$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/)?[^/]+/([^/]+)$ $1$2 [L]