我想编写一个简单的 .htaccess
脚本来执行以下任务:
http://www.website.com/files/documents/
subfolders
,例如images
,sheets
,texts
等。main folder
和subfolders
必须发生以下情况:
用户请求http://www.website.com/files/documents/images/image1.jpg
且该文件不存在 - > user会将一个目录重定向到文件存在的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
以下是我尝试过的代码:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?/)?[^/]+/(.+)$ $1$2 [L]
它适用于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
=> 没有工作等等......
答案 0 :(得分:0)
我觉得你不想让你的正则表达不合适,你想让它吃掉所有的文件夹直到最后一个。尝试:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/)?[^/]+/([^/]+)$ $1$2 [L]