Nginx重写规则,重复模式,根据文件名将文件名转换为一堆文件夹

时间:2015-08-28 16:49:46

标签: regex nginx url-rewriting rewrite

我制作的网站有点像imgur.com,其中包含来自网址根目录的大量图片,即i.example.com/imagefile.jpg

但是我想将服务器上的文件拆分成多个文件夹,以避免在一个文件夹中包含太多文件(以避免文件系统性能问题)。我希望每个文件夹名称都由文件名中的2个字母数字(A-Za-z0-9)字符组成,递归。

是否有一个重写规则可以使用重复模式执行此操作?

结果重写的一些例子是:

/1.jpg >>> /1/1.jpg
/ab.jpg >>> /ab/ab.jpg
/abc.jpg >>> /ab/c/abc.jpg
/abcd.jpg >>> /ab/cd/abcd.jpg
/filename.jpg >>> /fi/le/na/me/filename.jpg

URL有时也会包含短划线/连字符,我想对这些文件夹进行忽略,但保留在文件名中。即:

/this-has-dashes.jpg >>> /th/is/ha/sd/as/he/s/this-has-dashes.jpg

单一规则是否可以实现?那太好了。但如果没有,我很乐意为各种预期长度的文件名编写多个规则。

0 个答案:

没有答案