Хорошо, у меня есть apache IBM HTTP Server WAS 6.1
настройка
Я правильно установил certs
и могу успешно загрузить страницы http
и https
.
После успешной аутентификации j_security_check
через https
я хочу, чтобы теперь авторизованная страница (и все последующие страницы) загружалась как http
.
Я хочу, чтобы все это работало с mod_rewrite
, потому что я не хочу менять код приложения на то, что действительно должно быть просто сделать на веб-сервере.
Я бы подумал, что это будет работать, но это не так, и я боюсь, что это потому, что j_security_check
как-то обходит mod_rewrite
.
RewriteCond %{HTTPS} =off
RewriteCond %{THE_REQUEST} login\.jsp.*action=init [OR]
RewriteCond %{THE_REQUEST} login\.jsp.*action=submit
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] <<-- this rule is working
RewriteCond %{HTTPS} =on
RewriteCond %{THE_REQUEST} !login\.jsp.*action=init [OR]
RewriteCond %{THE_REQUEST} !login\.jsp.*action=submit
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R,L] <--- this rule is not working or the condition is not returning true
Я знаю, что [R,L]
заставит выполненное правило быть последним правилом, которое будет выполнено в запросе и соответственно перенаправлено.
Я нашел этот маленький драгоценный камень после небольшого гугления.
mod_rewrite: My rules are ignored. Nothing is written to the rewrite log.
The most common cause of this is placing mod_rewrite directives at global scope (outside of any VirtualHost containers) but expecting the directives to apply to requests which were matched by a VirtualHost container.
In this example, the mod_rewrite configuration will be ignored for requests which are received on port 443:
RewriteEngine On
RewriteRule ^index.htm$ index.html
<VirtualHost *:443>
existing vhost directives
</VirtualHost>
Unlike most configurable features, the mod_rewrite configuration is not inherited by default within a <VirtualHost > container. To have global mod_rewrite directives apply to a VirtualHost, add these two extra directives to the VirtualHost container:
<VirtualHost *:443>
existing vhost directives
RewriteEngine On
RewriteOptions Inherit
</VirtualHost>
Добавление объявления Inherit к моему одиночному объявлению virtualhost
, которое указывает на ip компьютера и port 443
, НЕ помогло ни на один бит.
Теперь я знаю, что мой сервер приложений обменивается данными 9080
и 9443
соответственно, но я не могу найти ни одного virtualhost
на веб-сервере httpd.conf
.
Я провел некоторое тестирование с другими правилами перезаписи, пока не прошел проверку подлинности, и увидел, что мой mod rewrite
код работает ..
Итак: как сделать так, чтобы websphere использовал перезапись мод после аутентификации?
Как будто веб-сервер используется только для неаутентифицированных запросов, и после этого какой-то контейнер черного ящика как-то обслуживает все.