У нас есть приложение 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, а не путь в файловой системе.