@wtfowned

Как перенаправить чистым htaccess запросы картинок на другую папку?

Доброго дня!

Картинки лежат в папке где название папки по первым 2м символам названия файла, например файл toster_help_me.jpg будет лежать в папке /mnt/images/to/toster_help_me.jpg

Задача сделать так чтобы все запросы картинок определенной подпапки (например uploads) переадресовывались к соответствующему файлу из реальной папки. Например:
/wp-content/uploads/2018/12/toster_help_me.jpg > /mnt/images/to/toster_help_me.jpg и т.д.

Как это сделать чисто средствами htaccess и возможно ли?

На PHP вроде как понятно (хотя наверняка с ошибками по части правил htaccess).

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} /wp-content/uploads/\.(jpg|jpeg|png|gif)$ [NC]
RewriteRule (.*) navigator.php?&src=$1 [L]
</IfModule>


И далее код самого navigator.php

$real_img_path = '/mnt/images';
$full_path = $_GET['src']; // /wp-content/uploads/2018/12/toster_help_me.jpg
$only_fname = substr($full_path, strrpos($full_path, '/') + 1); // toster_help_me.jpg
$image = $real_img_path . '/' . substr($only_fname, 0, 2) . '/' . $only_fname; // /mnt/images/to/toster_help_me.jpg
fpassthru(fopen($image, 'rb'));
  • Вопрос задан
  • 2631 просмотр
Пригласить эксперта
Ответы на вопрос 2
antoo
@antoo
Если они лежат вне папки DocumentRoot (если он например /var/www, а картинки в /mnt) - то только через проксю для чтения файлов, как в вашем примере, если доступны где-то в пределах веб-сервера (например в /var/www/mnt), то получить первые буквы можно вот так:
RewriteEngine On

RewriteCond %{REQUEST_URI} /wp-content/uploads/.*?\.(jpe?g|png|gif)$
RewriteRule ^.*/(.{2})(.+?\.(?:jpe?g|png|gif))$ /mnt/$1/$1$2 [NC]


Превращает путь из /wp-content/uploads/2018/12/toster_help_me.jpg в /mnt/to/toster_help_me.jpg
Ответ написан
Stalker_RED
@Stalker_RED
RewriteCond %{REQUEST_URI} /wp-content/uploads/\.(jpg|jpeg|png|gif)$ [NC]
RewriteRule (.*) /wp-content/uploads/2018/12/toster_help_me.jpg [L]

Оно?
Вместо любых картинок из /wp-content/uploads/ будет подсунут /wp-content/uploads/2018/12/toster_help_me.jpg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы