Php .htaccess前3个字符作为文件夹

Php .htaccess前3个字符作为文件夹,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我不确定是否有可能做到这一点,因为搜索答案并没有帮助(尽管说实话,我真的不知道如何用谷歌搜索)。无论如何,我有一个静态文件(图像)的域media.mydomain.com。所有图像都有随机名称,并且仅存在于域的主文件夹中。比如:media.mydomain.com/123abcdefgh.jpg。但是,我希望将它们组织到文件夹中,这样一个文件夹中就不会有100.000个文件。基本上,我希望有这样的media.mydomain.com/123/abcdefgh.jpg。字符串的前3个字符是文件夹名

我不确定是否有可能做到这一点,因为搜索答案并没有帮助(尽管说实话,我真的不知道如何用谷歌搜索)。无论如何,我有一个静态文件(图像)的域media.mydomain.com。所有图像都有随机名称,并且仅存在于域的主文件夹中。比如:media.mydomain.com/123abcdefgh.jpg。但是,我希望将它们组织到文件夹中,这样一个文件夹中就不会有100.000个文件。基本上,我希望有这样的media.mydomain.com/123/abcdefgh.jpg。字符串的前3个字符是文件夹名,其他字符是文件名。这个URL看起来也不错,如果没有解决方案,我会使用它。但是,也许可以使用.htaccess,并以某种方式使其获取请求uri的前3个字符,然后将它们重写到文件夹中,将字符串的其余部分重写到文件名中?因此,当您转到media.mydomain.com/123abcdefgh.jpg时,服务器将访问media.mydomain.com/123/abcdefgh.jpg。我希望我的问题是清楚的。有可能以某种方式做到这一点吗?提前感谢您的帮助。

通过
httpd.conf
启用
mod\u rewrite
.htaccess
,然后将此代码放入您的
文档根目录/.htaccess
文件:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/[^/]{3}/
RewriteRule ^(.{3})(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1/$2 [L,R=302,NC]