@Bone

Как в .htaccess сделать перенаправление на файл с учетом query string?

Здравствуйте! Суть задачи в том, чтобы отдавать уменьшенные варианты картинок, если они есть, а если нет, то перенаправлять запрос к скрипту, который сделает уменьшенную версию.

Механизм работы:
1. В папке /original лежат исходные изображения, например /original/1.jpg
2. Для уменьшения картинок предлагается использовать префикс /resized/ и GET параметры. Вот так: /resized/original/1.jpg?w=100&h=100
3. Предполагается, что если существует файл /resized/original/1_100_100.jpg, то отдать его, если не существует, то сделать редирект на /resizer.php (RewriteRule ^(.*)$ /resizer.php?path=$1 [NC,L,QSA])

Сейчас в папке rezised лежит такой .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /resizer.php?path=$1 [NC,L,QSA]
</IfModule>

Вопрос в том, как сделать проверку существования (и вернуть его, если существует) файла /resized/original/1_100_100.jpg, если запрос выглядит как /resized/original/1.jpg?w=100&h=100

Спасибо!
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@dodo512
<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond &%{QUERY_STRING} ^(?=.*&w=(\d+))(?=.*&h=(\d+))
RewriteCond %{DOCUMENT_ROOT}/resized/$1_%1_%2.$2 -f
RewriteRule ^(original/.+)\.(.+) /resized/$1_%1_%2.$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /resizer.php?path=$1 [L,QSA]
</IfModule>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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