Domanda

Ok, ho un apache IBM HTTP Server WAS 6.1 setup

Ho i miei certificati installati correttamente e posso caricare correttamente le pagine http e https .

Dopo aver eseguito correttamente j_security_check tramite https , voglio che la pagina ora autorizzata (e tutte le pagine successive) vengano caricate come http .

Voglio che tutto funzioni con mod_rewrite perché non voglio cambiare il codice dell'applicazione per qualcosa che dovrebbe davvero essere semplice da fare sul server web.

Penso che funzionerebbe, ma non funziona e temo sia perché j_security_check sta in qualche modo bypassando 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

So che il [R, L] forzerà la regola eseguita come l'ultima regola da eseguire su una richiesta e reindirizzerà di conseguenza.

Ho trovato questo piccolo gioiello dopo un po 'di google.

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>

L'aggiunta della dichiarazione Eredita alla mia singola dichiarazione virtualhost che punta all'ip della macchina e alla porta 443 NON ha aiutato un po '.

Ora so che il mio server delle applicazioni comunica rispettivamente su 9080 e 9443 ma non riesco a trovare un singolo virtualhost nel web server httpd.conf .

Ho fatto alcuni test con diverse regole di riscrittura mentre non ero autenticato e ho visto che il mio codice mod rewrite funzionava ..

Quindi: come faccio a far sì che websphere usi la riscrittura mod dopo l'autenticazione?

È come se il web server fosse usato solo per richieste non autenticate e dopo che qualche contenitore di blackbox serve tutto in qualche modo.

È stato utile?

Soluzione

Questa è la soluzione per http da https a http

Devi inserire la condizione e la regola di riscrittura nell'host virtuale come diceva l'Articolo ma per qualche ragione l'eredità non voleva funzionare.

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /path/login\.jsp\ HTTP/1\.1
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

   <VirtualHost 000.000.000.000:443>
    ServerName servername
    ServerAlias url.com machinename
    DocumentRoot d:/ibmhttpserver61/htdocs/en_US
    ErrorLog d:/ibmhttpserver61/logs/secerr.log
    TransferLog d:/ibmhttpserver61/logs/sectrans.log
    SSLEnable
    Keyfile d:/ibmhttpserver61/ssl/ctxroot.kdb
    SSLV2Timeout 100
    SSLV3Timeout 1000 

    RewriteEngine On
    RewriteCond %{REQUEST_URI} /path/secure/index.jsf
    RewriteRule ^(.*)$ http://url/path/secure/index.jsf [R,L]    

    </VirtualHost>

Altri suggerimenti

Indovina selvaggia: il secondo OR logico dovrebbe essere un AND (ovvero nessun [OR] e il valore RewriteCond predefinito è AND)?

RewriteCond %{THE_REQUEST} !login\.jsp.*action=init
RewriteCond %{THE_REQUEST} !login\.jsp.*action=submit
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top