У меня есть apache, настроенный как прокси для моего приложения, которое должно работать на определенном порту, это отлично работает с виртуальным хостом. Теперь мне нужно добавить еще одну директиву, мне нужно удалить /ex/ из любого входящего запроса и передать переписанный URL-адрес прокси.
Кажется, я не могу заставить оба работать, либо apache может переписать URL-адрес, но затем не может проксировать и пытается обслужить сам запрос, или он правильно проксирует, не удаляя /ex/, и маршрутизация моего приложения не выполняется, потому что он ищет /бывший/.
Вот рабочая конфигурация прокси (без перезаписи). Как я могу удалить /ex/ перед передачей его прокси? По-видимому, apache не может [P, R] одновременно, PT просто пересылает как есть.
<VirtualHost *:82>
ServerName xxx
ServerAlias xxx
DocumentRoot /opt/xxx
RewriteEngine On
# neither of these works, simply proxies as is to my application, routing fails
# RewriteRule ^ex/(.*) /$1 [L,R]
# RewriteRule ^/ex$ / [L,PT]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ http://127.0.0.1:11110%{REQUEST_URI} [P,QSA,L]
ProxyPass / http://127.0.0.1:11110/
ProxyPassReverse / http://127.0.0.1:11110/
ProxyPreserveHost on
# this doesn't work either
# ProxyPass /ex http://127.0.0.1:11110/
</VirtualHost>