所以我有超过500k的图像存储在目录树中。文件名是md5哈希值,存储在文件名的子目录中,以使子目录保持可接受的大小。
例如:
31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg
将存储在
中/foobar/3/1/c/31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg
我想要一个重写规则,使文件名更具描述性,如
/foobar/31c7cdd7b099283a61e0c357a2152a54b5ed6073/descriptive_bs_name.jpg
有没有办法提取/子串前3个字母,以便我可以将它指向正确的目录/文件?
答案 0 :(得分:1)
RewriteRule ^foobar/((.)(.)(.).*)/.*\.jpg /foobar/$2/$3/$4/$1.jpg [L]
共有4场比赛。第一个是foobar/
和/descriptive_bs_name.jpg
之间的所有内容。接下来的3个是文件名的前3个字符,因此您可以构建文件夹结构。
使用了http://www.domain.com/foobar/31c7cdd7b099283a61e0c357a2152a54b5ed6073/descriptive_bs_name.jpg
的请求网址新网址为http://www.domain.com/foobar/3/1/c/31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg 由于RewriteRule选项中的L,测试停止。
答案 1 :(得分:0)
即使slapyo更快,这里也是另一种选择。也许更容易理解。
RewriteRule ^foobar/(\w)(\w)(\w)(\w+)/(.*)\.jpg$ foobar/$1/$2/$3/$1$2$3$4.jpg [L]
\w
匹配任何字母,数字或下划线。