Назад | Перейти на главную страницу

Как переписать строки запроса в url (\ img? Src = foo.jpg) в cachable url (\ img-foo.jpg)?

вопрос, который сейчас частично решен. Гений, бегло говорящий на апачском языке, может пролить свет на это дело ...

ДАННЫЙ: Большинство прокси не кэшируют ресурсы с "?" в их URL, даже если в ответе присутствует заголовок Cache-control: public. Чтобы включить прокси-кеширование для этих ресурсов, мне нужно удалить строки запроса из ссылок на статические ресурсы и вместо этого закодировать параметры в самих именах файлов. *

В НАСТОЯЩЕЕ ВРЕМЯ ЕСТЬ

 <img src="/imgcpu?src=folder1/photo_citty.jpg&w=3500&h=10&c=p&q=90" />
 <img src="/imgcpu?src=folder2/photo_doggy.jpg&w=100&h=200&c=p" />
 <img src="/imgcpu?src=folder3/photo_birds.jpg&w=200&h=500&f=bw" />
 <img src="/imgcpu?src=folder3/photo_frogs.jpg&w=200&f=bw" />

ХОТЕЛ БЫ

 <img src="/IMG-folder1/photo_citty.jpg_w3500_h10_cp_q90" />
 <img src="/IMG-folder2/photo_doggy.jpg_w100_h200_cp" />
 <img src="/IMG-folder3/photo_birds.jpg_w200_h500_cs_fbw" />
 <img src="/IMG-folder3/photo_frogs.jpg_w200_fbw" />

Я знаю, что "img? Src =" - плохая часть, и уже разобрался с этим:

# Rewrite imgcpu?src= thumbnail maker to nice static urls
RewriteRule ^IMG-(.*) /imgcpu?src=$1 [L]

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

ПРОГРЕСС
IMG-folder1/photo_citty.jpg&w=3500&h=10&c=p&q=90 РАБОТАЕТ
IMG-folder1/photo_citty.jpg_w-3500_h-10_c-p_q-90 НЕ РАБОТАЕТ
IMG-folder1/photo_citty_w-3500_h-10_c-p_q-90.jpg НЕ РАБОТАЕТ

RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)_c-(.+)$ imgcpu\?src=$1&w=$2&h=$3&c=$4 [L]
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)_f-(.+)$ imgcpu\?src=$1&w=$2&h=$3&f=$4 [L]   
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)$ imgcpu\?src=$1&w=$2&h=$3 [L]
RewriteRule ^IMG-(.+)_w-(.+)$ imgcpu\?src=$1&w=$2 [L]
RewriteRule ^IMG-(.+)_h-(.+)$ imgcpu\?src=$1&h=$3 [L]
# pfff endless possibilities!!

И это даже не касается случаев, когда сначала высота задается шириной. Нет, это не сработает!

Давайте найдем решение для перенаправления всех ДОПОЛНИТЕЛЬНЫХ & w = или & h = с чем-то вроде & [a-z] = (. *), Чтобы _h- или _w- были универсальными и неважно, какая там буква _c- или _q-, тогда все может подойти. ЭТО было бы очень желанным переписыванием.

Между тем это работает !!

<img src"/IMG-folder/photo_w100_h100_cf_q60.jpg"/>

используя:

RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_q(.+).jpg$ 
            imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&q=$5 [L]

Итак, задание сейчас:
Перепишите любой или все последующие запросы. [photo123.jpg]&[a-z]=(.*)&[a-z]=(.*)etcettera в photo123_X-x_Y-y(optionally more queries).jpg

Правило

RewriteRule ^/imgcpu\?src=(.+)&w=(.+)&h=(.+)&c=(.+)&q=(.+)$ /IMG-$1_w-$2_h-$3_c-$4_q-$5

Разберемся с первым случаем, проблема в том, что вам понадобится гораздо более сложный RE, чтобы справиться с различиями во второй и третьей строке (отсутствует q и p части URL, дополнительные s переменная и т. д.).

Чтобы предотвратить беспорядок долгой и только для записи регулярное выражение. Я бы сделал по одному правилу для каждого из трех случаев.

RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)_c-(.+)$ imgcpu\?src=$1&w=$2&h=$3&c=$4 [L]
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)_f-(.+)$ imgcpu\?src=$1&w=$2&h=$3&f=$4 [L]   
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)$ imgcpu\?src=$1&w=$2&h=$3 [L]
RewriteRule ^IMG-(.+)_w-(.+)$ imgcpu\?src=$1&w=$2 [L]
RewriteRule ^IMG-(.+)_h-(.+)$ imgcpu\?src=$1&h=$3 [L]
# pfff endless possibilities!!

И это даже не касается случаев, когда сначала высота задается шириной. Нет, это не сработает!

Давайте найдем решение для перенаправления всех ДОПОЛНИТЕЛЬНЫХ & w = или & h = с чем-то вроде & [a-z] = (. *), Чтобы _h- или _w- были универсальными и неважно, какая там буква _c- или _q-, тогда все может подойти. ЭТО было бы очень желанным переписыванием.

Между тем это работает !!

<img src"/IMG-folder/photo_w100_h100_cf_q60.jpg"/>

используя:

RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_q(.+).jpg$ 
            imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&q=$5 [L]

Итак, задание сейчас:
Перепишите любой или все последующие запросы. [photo123.jpg]&[a-z]=(.*)&[a-z]=(.*)etcettera в photo123_X-x_Y-y(optionally more queries).jpg