Мне нужно создать RewriteRule
чтобы делегировать путь URL, например /tdg/image.jpg?mode=crop&width=300&height=300
на локальный прокси.
Прокси-сервер должен преобразовать данный URL в следующий формат.
http://localhost:8888/unsafe/300x300/smart/tdg/image.jpg
Я сначала попробовал использовать ProxyPassMatch
apache, но я не могу получить данные о ширине и высоте из строки запроса.
ProxyRequests On
ProxyPreserveHost On
ProxyPassMatch ^\/(tdg.+\.(?:png|jpeg|jpg|gif))\?mode=crop.+width=(d+)&height=(d+) http://localhost:8888/unsafe/$2x$3/smart/$1
Я тоже пробовал RewriteRule
RewriteEngine On
RewriteRule ^\/(tdg.+\.(?:png|jpeg|jpg|gif))\?mode=crop.+width=(d+)&height=(d+) http://localhost:8888/unsafe/$2x$3/smart/$1
И в обоих случаях URL-адрес результата для прокси-сервера http://localhost:8888/unsafe/x/smart/$1
где должно быть http://localhost:8888/unsafe/300x300/smart/tdg/image.jpg
Я понятия не имею, почему я не могу достать width
и height
значение из строки запроса, используя group
синтаксис регулярных выражений.
В RewriteRule
Директива соответствует только компоненту пути, она не включает строку запроса. Пытаться:
RewriteEngine On
RewriteCond %{QUERY_STRING} mode=crop.+width=(\d+)&height=(\d+)
RewriteRule ^\/(tdg.+\.(?:png|jpeg|jpg|gif)) http://localhost:8888/unsafe/%1x%2/smart/$1 [P]
Обратите внимание на разницу обратной ссылки при замене при использовании RewriteCond
. Чтобы использовать обратные ссылки из обоих мест, используйте% N для тех из RewriteCond
и $ N для участников RewriteRule
.