ProxyPass не работает вместе с ProxyPassMatch

ProxyPass не работает вместе с ProxyPassMatch

Итак, на данный момент у меня есть виртуальный хост, настроенный на моем экземпляре Oracle HTTP Server с ProxyPass следующим образом:

ProxyPass ^/test/home/ https://example.com/
ProxyPassMatch ^/test/home/(.*)$ https://example.com/$1
ProxyPassReverse ^/test/home/(.*)$ https://example.com/$1

Когда я пытаюсь получить доступ, https://mywebsite.com/test/home/<url_from_other_server>запрос, кажется, работает как и ожидалось. Однако, когда я пытаюсь получить доступ, https://mywebsite.com/test/home/он не проксирует меня, https://example.com/а вместо этого возвращает 404.

Подстановочный ProxyPassMatchзнак, похоже, работает для всех подадресов, к которым я пытаюсь получить доступ, а вот обычное ProxyPassключевое слово — нет.

Я также попытался удалить его ProxyPassполностью, но получаю ту же ошибку 404 при попытке доступа к /test/home/

Есть ли у кого-нибудь идеи, что может быть причиной такого странного поведения?

Спасибо.

решение1

Ваше регулярное выражение не совсем верно. *означает "ноль или более вхождений", поэтому https://mywebsite.com/test/home/соответствует ему. Измените (.*)на (.+), что означает "одно или более вхождений". Тогда ваш ProxyPassMatch больше не должен соответствовать этому URL.

Или просто удалите строку ProxyPassMatch полностью, она бесполезна, URL-адреса обрабатываются строкой ProxyPass автоматически.

ProxyPass /test/home/ https://example.com/
ProxyPassReverse /test/home/ https://example.com/

решение2

Проблема решена. Правильная конфигурация для этой конкретной проблемы следующая:

ProxyPass /test/home(.*)$ https://example.com/$1
ProxyPassReverse /test/home(.*)$ https://example.com/$1

Удаление косой черты и добавление подстановочного знака позволило нам проксировать все, что следует за /test/home.

Спасибо всем за ваш вклад.

Связанный контент