Правило перенаправления htaccess на основе строки запроса - PullRequest
0 голосов
/ 11 июня 2018

У меня есть служба динамического изменения размера, работающая с файлом /index.php, и она будет создавать обработанный (измененный, оптимизированный) файл в папке / media / _cache, добавляя значение параметров запроса, например:

http://mymedia.service.com/content/2018/Apr/filename.jpg?w=200&h=200&cc=1

это создаст файл в: /media/_cache/content/2018/Apr/filename_w200_h200_cc.jpg

Здесь мне нужно правило htaccess, чтобы проверить, существует ли файл, тогдаСервер должен работать напрямую с сервера, не переходя на страницу /index.php.

Заранее спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

После долгих усилий, наконец я нашел способ сделать это:

#when url has width and height params only
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/media
RewriteCond %{QUERY_STRING} ^w=(\d+)&h=(\d+)$
RewriteRule ^(.*)\.(\w+)$ /media/_cache/$1_w%1_h%2.$2   [L]

#when url has width, height and cc
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/media
RewriteCond %{QUERY_STRING} ^w=(\d+)&h=(\d+)&cc=1$
RewriteRule ^(.*)\.(\w+)$ /media/_cache/$1_w%1_h%2_cc.$2    [L]

#if redirection rule not found file in cache, then it will be redirect to index.php for resizing & optimization
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule (.*) index.php/$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...