У меня есть ситуация, когда я хочу перенаправить все, что начинается с / app, на внутренний сервер. По сути, идея состоит в том, что Apache будет работать как обратный прокси, выполняя следующее преобразование:
http://external/app -> http://myserver:1082/myapp
Я смог сделать это с помощью Rewrite следующим образом:
RewriteCond %{REQUEST_URI} ^/app
RewriteRule ^/app(.*)$ http://myserver:1082/myapp$1 [L,P]
ProxyPassReverse /app http://myserver:1082/myapp
Работает нормально. Проблема в том, что теперь у меня будет языковой преффикс в URL-адресе, но не в приложении. Поэтому мне нужно следующее перенаправление:
http://external/app -> http://myserver:1082/myapp
http://external/en/app -> http://myserver:1082/myapp
http://external/pt/app -> http://myserver:1082/myapp
Хотя это можно сделать с помощью перезаписи, у меня проблема с файлом proxyPassReverse. Потому что в основном мне нужно сделать динамический ProxyPassRever, который, в зависимости от фактического запроса URL-адреса пользователем, изменяет местоположение
ProxyPassReverse /en/app http://myserver:1082/myapp
ProxyPassReverse /pt/app http://myserver:1082/myapp
ProxyPassReverse /app http://myserver:1082/myapp
Это было бы что-то вроде
ProxyPassReverse ${preffix}/app http://myserver:1082/myapp
Возможно ли это?
Из ProxyPathReverse:
При использовании внутри раздела первый аргумент опускается, и локальный каталог получается из файла.
Из Расположение:
URL-адрес может использовать подстановочные знаки. В строке с подстановочными знаками? соответствует любому одиночному символу, а * соответствует любой последовательности символов. Также можно использовать расширенные регулярные выражения с добавлением символа ~.
Итак, вы должны уметь использовать:
<Location /[a-z]+/app>
ProxyPathReverse http://myserver:1082/myapp
</Location>