Назад | Перейти на главную страницу

Перенаправление Apache / Tomcat

У нас есть приложение Tomcat от поставщика, работающее с Apache перед ним, но у нас нет доступа к коду приложения. У нас есть собственная система единого входа, обернутая вокруг приложения, поэтому, если пользователь нажимает «Выйти» в приложении, пользователь попадает на неиспользуемый экран «Вход». Мы хотели бы перенаправить этот экран входа в систему на страницу Tomcat по умолчанию, но я не могу понять синтаксис правильно.

Я пробовал несколько безуспешных корректировок (избегая / и т. Д.). У кого-нибудь есть идеи? У меня уже работает перенаправление с HTTP на HTTPS (включено в приведенные ниже директивы).

Ссылка «Выход» проходит через несколько перенаправлений, которые в конечном итоге заканчиваются: http://ourserver.com/abc/login

Для простоты мы хотели бы перенаправить любой запросить страницу входа для: http://ourserver.com/

<VirtualHost *:80>
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
RewriteRule ^/abc/login$ / [L]
</VirtualHost>

Выяснилось - оказывается, я включал директивы перенаправления в неправильное объявление VirtualHost.

В приведенном выше примере у нас есть правило перенаправления, которое следует непосредственно за виртуальным хостом порта 80, единственная цель которого - перенаправить пользователей на HTTPS. Наше второе правило перезаписи никогда не будет запущено после того, как пользователь перейдет на VirtualHost * 443.

Копирование приведенного выше правила перезаписи в наше объявление * 443 сработало немедленно.

RewriteRule по умолчанию предполагает, что результатом перезаписи является путь файловой системы. Вы говорите своему серверу обслуживать / abc / login из корня вашей файловой системы, что, вероятно, не то, что вы хотите, и правильно настроенный сервер даже не разрешит это.

Что вам нужно сделать, так это добавить флаг PT. Как это:

RewriteRule ^/abc/login$ / [PT]

Флаг PT подразумевает L и заставляет сервер рассматривать результат замены как URI, а не путь в файловой системе.