Apache Rewrite URL, действуя как обратный прокси [дубликат]

Кажется, у меня возникли проблемы с mod_rewrite Apache для перезаписи URL-запросов при использовании его с mod_proxy для работы в качестве обратного прокси. Таким образом, я пытаюсь перенаправить запросы на неминифицированный CSS на мой миниатюрный CSS, расположенный в другом каталоге.

В настоящее время у меня есть веб-приложение, запрашивающее его CSS, по адресу https://example.com/assets/css/styles.css . У меня есть мой миниатюрный CSS, хранящийся на https://example.com/assets/css/min/styles.min.css . Поскольку я не могу изменить код, в котором связан CSS, я хочу использовать Apache mod_rewrite, чтобы преобразовать все запросы для assets / css / styles.css в assets / css / min / styles.min .css .

Кроме того, веб-приложение в настоящее время работает на отдельном внутреннем сервере, 192.168.1.100 , поэтому у меня ProxyPass и ProxyPassReverse настроены как

ProxyPass / http://192.168.1.100/
ProxyPassReverse / http://192.168.1.100/

В настоящее время я пробовал добавить

<Location /assets/css>  
  RewriteEngine On
  RewriteBase /assets/css
  RewriteCond %{REQUEST_URI} ^/assets/css/((.+)\.css)$
  RewriteCond %{DOCUMENT_ROOT}/assets/css/min/%2.min.css -f
  RewriteRule ^(.+)$ min/%2.min.css [L]
</Location>

I Я также пробовал добавить косую черту в конце / assets / css , но это ничего не дало. Я сейчас в растерянности, так как я не лучший в mod_rewrite.

Я думаю, что это, вероятно, связано с взаимодействием между Mod_Proxy и Mod_Rewrite, которое вызывает проблему. Я взял фрагмент блока Location из другого моего проекта и соответствующим образом адаптировал пути к файлам. Он работал правильно в этом проекте, который не использовал Mod_Proxy и напрямую обслуживал контент.

0
задан 5 September 2016 в 09:33
1 ответ

Ваши текущие директивы в блоке работают только для файлов, обслуживаемых Apache прямо. Второй RewriteCond - это проверка наличия файла в файловой системе. Он не может проверить, что внутренний сервер может обслуживать этот свернутый файл.

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

На вашем сервере Apache что-то вроде:

<Location /assets/css>
  RewriteEngine On
  RewriteRule ^/assets/css/([^/]+)\.css$ /path/to/min/$1.min.css [L,PT]
</Location>
0
ответ дан 24 November 2019 в 05:51

Теги

Похожие вопросы