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
Php 使用htaccess重写的描述性文件名_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php 使用htaccess重写的描述性文件名

Php 使用htaccess重写的描述性文件名,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,所以我有超过500k的图像存储在目录树中。文件名是md5哈希,存储在文件名的子目录中,以使子目录保持可接受的大小 例如: 31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg 将存储在 /foobar/3/1/c/31c7cdd7b099283a61e0c357a2152a54b5ed6073.jpg 我希望有一个重写规则,使文件名更具描述性,比如 /foobar/31c7cdd7b099283a61e0c357a2152a54b5ed6073/desc

所以我有超过500k的图像存储在目录树中。文件名是md5哈希,存储在文件名的子目录中,以使子目录保持可接受的大小

例如:

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
匹配任何字母、数字或下划线。

()
匹配并捕获单个字符。