Переопределяет ли директива Redirect настроенные псевдонимы? - PullRequest
1 голос
/ 17 апреля 2019

Я настраиваю Apache 2.4 (Docker) в качестве обратного прокси-сервера для распределения разных поддоменов по различным сервисам Docker. Я перенаправляю http-запросы в https, используя директиву Redirect. Однако один конкретный URL-путь (часть после домена) не следует перенаправлять на https, а обслуживать с файлами из определенного каталога. Я пытаюсь сделать это с помощью директивы Alias, которая не работает.

Я предполагаю, что Redirect переопределяет Alias. Это правда? И как я могу достичь своей цели, если это так?

<VirtualHost *:80>

    ServerName service.example.com

    Alias /exception/ /var/www/exception
    Redirect permanent / https://service.example.com/

</VirtualHost>

Я ожидал, что это сработает, но это не так.

1 Ответ

2 голосов
/ 17 апреля 2019

С mod_alias docs :

Сначала все перенаправления обрабатываются до обработки псевдонимов, и поэтому запрос, который соответствует Redirect или RedirectMatch, будет Никогда не применяйте псевдонимы. Во-вторых, псевдонимы и перенаправления обрабатываются в порядке их появления в файлах конфигурации, с первый матч имеет преимущество.

Чтобы убедиться, что /exception/ не соответствует, используйте RedirectMatch, который разрешает шаблоны регулярных выражений:

RedirectMatch permanent "^/(?!exception/)(.*)" "https://service.example.com/$1"
...