У меня есть веб-сайт, который будет содержать миллионы страниц в каталоге. Я хотел бы хранить эти файлы на диске во множестве подкаталогов, основанных на первых символах имени страницы.
Например
http://mysite.com/hugedir/somefile.html
будет храниться в /var/www/html/hugedir/s/o/m/e/f/ile.html
Это довольно тривиально сделать с RewriteRule следующим образом:
RewriteRule ^hugedir/(.)(.)(.)(.)(.)(.*).html /hugedir/{$1}/{$2}/{$3}/{$4}/{$5}/$6.html
RewriteRule ^hugedir/(.)(.)(.)(.)(.*).html /hugedir/{$1}/{$2}/{$3}/{$4}/{$5}.html
RewriteRule ^hugedir/(.)(.)(.)(.*).html /hugedir/{$1}/{$2}/{$3}/{$4}.html
RewriteRule ^hugedir/(.)(.)(.*).html /hugedir/{$1}/{$2}/{$3}.html
RewriteRule ^hugedir/(.)(.*).html /hugedir/{$1}/{$2}.html
RewriteRule ^hugedir/(.*).html /hugedir/{$1}.html
Тем не менее, имя файла может содержать дефисы или другие нестандартные символы, и я бы действительно хотел бы избежать того, чтобы каталог имел странный символ. В идеале я хотел бы иметь список «утвержденных» символов и либо исключить, либо преобразовать неутвержденные символы в подчеркивание.
Кто-нибудь может придумать, как это сделать? Или что-то еще эквивалентное? Часть требования состоит в том, что это должны быть физические файлы на диске, и они не должны анализироваться языком сценариев.