Frage

Ok, ich habe eine apache IBM HTTP Server WAS 6.1 Konfiguration

Ich habe meine certs richtig installiert und kann erfolgreich geladen werden http und https Seiten.

Nach einem erfolgreichen j_security_check Authentifizierung über https, Ich möchte, dass die jetzt autorisierte Seite (und alle nachfolgenden Seiten) als laden http.

Ich möchte, dass alles alles funktioniert mod_rewrite Weil ich den Anwendungscode nicht für etwas ändern möchte, das auf dem Webserver wirklich einfach zu tun sein sollte.

Ich würde denken, das würde funktionieren, aber es nicht und ich fürchte, es liegt daran j_security_check Umgangen mod_rewrite irgendwie.

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

Ich kenne das [R,L] wird die ausgeführte Regel dazu zwingen, die letzte Regel auf eine Anfrage auszuführen und entsprechend umzuleiten.

Ich habe dieses kleine Juwel nach ein wenig Google gefunden.

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>

Hinzufügen der Erbdeklaration zu meiner Single virtualhost Erklärung, die auf die Maschinen -IP hinweist und port 443 Hat ein bisschen nicht geholfen.

Jetzt weiß ich, dass mein App -Server mit kommuniziert 9080 und 9443 jeweils aber ich kann keine einzelne finden virtualhost auf dem Webserver httpd.conf.

Ich habe einige Tests mit unterschiedlichen Umschreiben von Regeln durchgeführt, während ich nicht authentifiziert war und gesehen habe, dass mein mod rewrite Code funktioniert ..

Also: Wie kann ich WebSphere -Verwenden von Mod -Umschreiben nach der Authentifizierung verwenden?

Es ist, als würde der Webserver nur für nicht authentifizierte Anforderungen verwendet, und danach serviert ein Blackbox -Container alles irgendwie.

War es hilfreich?

Lösung

Dies ist die Lösung für HTTP zu HTTPS zu HTTP

Sie müssen die Bedingung und die Umschreibregel in den virtuellen Host wie der Arcticle sagen, aber aus irgendeinem Grund wollte die Vererbung nicht funktionieren.

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>

Andere Tipps

Wilde Vermutung: Sollte der zweite logische oder sein und (dh nein [oder] und die Umschreiber standardmäßig und)?

RewriteCond %{THE_REQUEST} !login\.jsp.*action=init
RewriteCond %{THE_REQUEST} !login\.jsp.*action=submit
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top