Php 使用htaccess重写的描述性文件名
所以我有超过500k的图像存储在目录树中。文件名是md5哈希,存储在文件名的子目录中,以使子目录保持可接受的大小 例如:Php 使用htaccess重写的描述性文件名,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,所以我有超过500k的图像存储在目录树中。文件名是md5哈希,存储在文件名的子目录中,以使子目录保持可接受的大小 例如: 31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg 将存储在 /foobar/3/1/c/31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg 我希望有一个重写规则,使文件名更具描述性,比如 /foobar/31c7cdd7b099283a61e0c357a2152a54b5ed6073/desc
31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg
将存储在
/foobar/3/1/c/31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg
我希望有一个重写规则,使文件名更具描述性,比如
/foobar/31c7cdd7b099283a61e0c357a2152a54b5ed6073/descriptive_bs_name.jpg
有没有办法提取前3个字母的子字符串,这样我就可以将其指向正确的目录/文件
RewriteRule ^foobar/((.)(.)(.).*)/.*\.jpg /foobar/$2/$3/$4/$1.jpg [L]
有4场比赛。第一个是介于foobar/
和/descripative\u bs\u name.jpg
之间的所有内容。接下来的3个字符是文件名的前3个字符,因此您可以构建文件夹结构
已使用请求的URL
新的url是
由于重写规则选项中的L,测试将停止。尽管slapyo更快,但这里有一个替代方法。也许更容易理解
RewriteRule ^foobar/(\w)(\w)(\w)(\w+)/(.*)\.jpg$ foobar/$1/$2/$3/$1$2$3$4.jpg [L]
\w
匹配任何字母、数字或下划线。()
匹配并捕获单个字符。