У меня есть каталог вне webroot, который используется для хранения изображений, загруженных из отдельной системы администратора. Изображения хранятся в этом формате:
filepath/writable/images/00/00/23/65/filename-236581.jpg
(где webroot - filepath / html)
... например. Здесь 236 - это идентификатор изображения в базе данных, а файловая система разбита на пронумерованные каталоги, чтобы не использовать более 100 inode в одном каталоге.
Я хочу иметь доступ к ним через интерфейсный веб-сервер, например:
http://(server)/filename-236581.jpg
Где filename - оптимизированная для SEO строка, такая же, как и в названии фактического файла.
Я могу заставить mod-rewrite перезаписать URL, чтобы он содержал дополнительные пронумерованные каталоги, и я могу получить псевдоним, чтобы перенаправить запрос в каталог writable / images, но я не могу сделать оба одновременно. Если я добавлю обе директивы alias и mod_rewrite, он игнорирует псевдоним и журнал ошибок сообщит, что не может найти filepath / html / uploaded-images.
Вот что у меня есть:
RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC]
... и так далее, вплоть до:
RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC]
alias /uploaded-images "filepath/writable/images"
Удаление [L] не имеет значения.