nginx/apache - хитрый редирект изображений
Старый путь
https://site.com/pictures/202cb962ac59075b964b07152d234b70.jpg
Новый путь с подпапками двух уровней
https://site.com/p/20/2c/202cb962ac59075b964b07152d234b70.jpg
Как можно это сделать средствами htaccess или nginx?
Пока что остановился на создании регулярки https://regex101.com/r/H0Flzp/1
Ответы (2 шт):
Автор решения: AVe
→ Ссылка
Вот так получилось
location /pictures/ {
if ($uri ~ "/pictures/(([a-z0-9]{2,2})([a-z0-9]{2,2})([a-z0-9\.]+))$") {
rewrite "/pictures/(([a-z0-9]{2,2})([a-z0-9]{2,2})([a-z0-9\.]+))$" "/p/$2/$3/$2$3$4" permanent;
}
}
Автор решения: Alexey Ten
→ Ссылка
А зачем редирект? Проще же сразу отдать картинку.
Например:
location /pictures/ {
rewrite "/pictures/(([0-9a-f]{2})([0-9a-f]{2})[0-9a-f]{28}\.\w+)$" "/p/$2/$3/$1";
}
Я тут заодно подправил регулярку, судя по виду это хеш, обычно в нём используются шестнадцатеричные цифры.
UPD: Исправил регулярное выражение. В первый раз забыл про расширение файла. https://regex101.com/r/H0Flzp/2