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

时间:2013-10-18 09:46:12

标签: php regex apache .htaccess mod-rewrite

我不确定是否甚至可以这样做,因为搜索答案没有帮助(虽然说实话,我不确定如何甚至谷歌这个)。无论如何,我有一个域名静态文件(图像)media.mydomain.com。所有图像都有随机名称,就在域的主文件夹中。像这样:media.mydomain.com/123abcdefgh.jpg。但是,我想将它们组织到文件夹中,所以我不会在一个文件夹中有100.000个文件。基本上,我很想拥有像这样的媒体.mydomain.com/123/abcdefgh.jpg。字符串的前3个字符是文件夹名称,其他是文件名。这个URL看起来也很好,如果没有解决方案,我会继续使用它。但是,也许可以使用.htaccess并以某种方式使它占用请求uri的前3个字符并将它们重写到文件夹中,其余的字符串重写为文件名?所以当你去media.mydomain.com/123abcdefgh.jpg时,服务器将访问media.mydomain.com/123/abcdefgh.jpg。我希望我的问题很明确。有可能以某种方式这样做吗?提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

启用mod_rewrite.htaccesshttpd.conf,然后将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

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