Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod_rewrite und https

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
jmb1972
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 14.04.2008, 10:47

Beitrag von jmb1972 » 14.04.2008, 11:41

Hallo,
ich habe einen OSC-Shop installiert und um DC zu vermeiden in der .htaccess die Domain eindeutig auf den Zusatz www festgelegt. Jetzt besteht ein Problem mit dem SSL Zertifikat des Shops sowie bereits schon mit der Anmeldung ins Kundenkonto wenn ich in der htaccess den Code:

Code: Alles auswählen

RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301]
aktiviere.

Wie kann man dieses Problem lösen?

Vielen Dank im Voraus

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 14.04.2008, 16:35

Da Ihr anscheinend einen SSL-Proxy (ssl.kundenserver.de) verwendet, sollte folgendes funktionieren:

Code: Alles auswählen

RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301]
Allerdings besteht dann das Problem, dass theoretisch jede Unterseite über den SSL-Proxy erreichbar wäre. Aber vll. ist dieses Problem über Eure Shop-Software geklärt?

jmb1972
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 14.04.2008, 10:47

Beitrag von jmb1972 » 14.04.2008, 18:21

Hallo chris21,

danke für deine Antwort, deine Lösung funktioniert. Wie aber muß ich das verstehen das dann jede Unterseite über den SSL Proxy erreichbar wäre?

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 14.04.2008, 20:31

Hi,

damit meinte ich, dass Deine Startseite z.B. auch über den SSL-Proxy erreichbar ist.

Dadurch aber wäre der Versuch, eine Standarddomain einzurichten, wieder unterlaufen.

Ändern könnte man dies, indem man eine genaue Liste erstellt, welche Dateien/URLs über den SSL-Proxy laufen sollen und welche nicht.

Beispiel: Teelichter-Unterseite: kein SSL-Proxy,
Login- und Bezahlen etc. -> SSL-Proxy

Falls die Liste jener Unterseiten, die über den SSL-Proxy laufen sollen, überschaubar wäre, könnte man es z.B. so regeln:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} !^login\.php$
RewriteCond %{REQUEST_URI} !^create_account\.php$
RewriteCond %{REQUEST_URI} !^account\.php$
RewriteCond %{REQUEST_URI} !^checkout_shipping\.php$
RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301]


RewriteCond %{REQUEST_URI} ^login\.php$ [OR]
RewriteCond %{REQUEST_URI} ^create_account\.php$ [OR]
RewriteCond %{REQUEST_URI} ^account\.php$ [OR]
RewriteCond %{REQUEST_URI} ^checkout_shipping\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$ 
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301]
Wichtig wäre dann aber, wirklich alle URLs zu erwischen, die über den SSL-Proxy laufen sollen und diese URLs dann jeweils im erstem Block wie dort die erste Zeile und im zweiten Block wie dort die erste Zeile (vom zweiten Block) einzufügen.

Ich habe übrigens leider gerade nicht testen können, ob die Conditionen im zweiten Block richtig in der Kombination aus der REQUEST_URI und der HTTP:X-FORWARDED-SERVER zusammenspielen. Falls nicht, bitte kurz melden.

jmb1972
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 14.04.2008, 10:47

Beitrag von jmb1972 » 15.04.2008, 15:31

Hallo chris21,
ich habe getestet: die Startseite hat von domain.de auf \www.domain.de\ einen 301 redirect, allerdings nur für die Domain, nicht für die Unterseiten. Die Anmeldung am Kundenkonto funktioniert damit aber nicht. Ich hab noch mal gesucht und folgenden Code gefunden.

Code: Alles auswählen

RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.1 [NC]#hier muß die IP der Domaine rein
RewriteCond %{HTTP_HOST} ^domain\.de [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
Damit ist die Domain sowie alle Unterseiten nur über www erreichbar, damit wäre für den ganzen Shop die Problematik DC geklärt. Allerdings nicht für einen Shop mit SSL wie meiner. Da funktioniert die Anmeldung ans Kundenkonto auch nicht. Jetzt ist die gute Frage wie macht man mit diesen drei Codezeilen auch noch SSL möglich.

Gruß jmb9172

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 15.04.2008, 16:13

Hi,

ähem, der Code ist kein großer Unterschied zu Deinem ersten Versuch. Die Remote_Addr(ess) 192.168.1.1 gehört zu den in internen Netzen zu vergebenden IP-Adressen, die hat hier keine Relevanz.

Die anderen beiden Zeilen machen ansonsten nicht wirklich etwas anderes als Dein erster Versuch aus dem Eingangspost.

Daher versuche ich nochmal, meinen letzten Ansatz für Dein Problem zu verfeinern.

Ich habe in den beiden obigen Blöcken von mir einen kleinen Fehler entdeckt, hier noch einmal die Korrektur zum Testen:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} !^/login\.php$
RewriteCond %{REQUEST_URI} !^/create_account\.php$
RewriteCond %{REQUEST_URI} !^/account\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.gif$
RewriteCond %{REQUEST_URI} !^/stylesheet\.css$
RewriteCond %{REQUEST_URI} !^/checkout_shipping\.php$
RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301]


RewriteCond %{REQUEST_URI} ^/login\.php$ [OR]
RewriteCond %{REQUEST_URI} ^/create_account\.php$ [OR]
RewriteCond %{REQUEST_URI} ^/account\.php$ [OR]
RewriteCond %{REQUEST_URI} ^/checkout_shipping\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301] 
Falls damit nicht der gewünschte Effekt erzielt wird, probier mal, die Backslashes vor den Punkten in den RewriteCond-suchmustern wegzulassen, also:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} !^/login.php$
RewriteCond %{REQUEST_URI} !^/create_account.php$
RewriteCond %{REQUEST_URI} !^/account.php$
RewriteCond %{REQUEST_URI} !^/(.+).gif$
RewriteCond %{REQUEST_URI} !^/stylesheet.css$
RewriteCond %{REQUEST_URI} !^/checkout_shipping.php$
RewriteCond %{HTTP_HOST} !^www.domain.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301]


RewriteCond %{REQUEST_URI} ^/login.php$ [OR]
RewriteCond %{REQUEST_URI} ^/create_account.php$ [OR]
RewriteCond %{REQUEST_URI} ^/account.php$ [OR]
RewriteCond %{REQUEST_URI} ^/checkout_shipping.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl.kundenserver.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301] 
Wichtig: hier muss, wie oben beschrieben, jede Datei (wie z.B. login.php), die über SSL laufen soll, im ersten Block und im zweiten Block aufgeführt werden, im ersten Block jedoch mit einem ! (Ausrufezeichen = bedeutet bei Modrewrite "nicht") davor.

Um mal kurz zu erklären, was diese Blöcke machen:

Der erste Block sagt, wenn die Datei nicht /login.php und nicht /create_account.php und nicht ... und nicht checkout_shipping.php heißt und die Domain nicht www.domain.de ist, dann leite die Anfrage auf www.domain.de um, also z.B. domain.de/teelichter.html -> www.domain.de/teelichter.html

Der zweite Block nun sagt, wenn die Datei /login.php oder /create_account.php oder ... oder /checkout_shipping.php heißt und der SSL-Proxy nicht verwendet wird, leite die Anfrage auf den SSL-Proxy um.

Das bedeutet dann aber, dass man wirklich alle URLs erwischen muss, die über den SSl-Proxy laufen sollen, also z.B. auch alle Grafiken (oben unter der Regex "/(.+).gif" eingebunden) oder Stylesheets oder ausgelagerte Javascripts (würden diese nicht mit aufgenommen werden, würden das SSL-Protokoll darüber schimpfen, dass die Inhalte teilweise nicht sicher sind).

MfG

Chris

Edit: noch einen kleinen Copy&Paste-Fehler beseitigt. @ 17:16

jmb1972
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 14.04.2008, 10:47

Beitrag von jmb1972 » 16.04.2008, 15:36

Hallo Chris,

Ich habe den Code mit den Backslashes genommen und es hat funktioniert. Die restlichen Dateien die ich noch SSL-verschlüsselt brauchte habe ich noch eingefügt. Vielen Dank erstmal...

Natürlich weiß ich das die 192er IP keine öffentliche ist, deshalb hab ich sie ja als Beispiel genommen. Schau in die Zeile, ich habe eine Erklärung hinzugefügt. Die Syntax von Modrewrite kann ich auch mittlerweile lesen, Probleme hab ich nur noch mit der fehlenden Praxis, also wann ich wie was coden muß. Was ich haben will kann ich formulieren, aber halt noch nicht richtig umsetzten. Aber ich werde mich bemühen und üben :D

Grüße Jens

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 16.04.2008, 18:07

Hi Jens,

super, dass es klappt. Wollte Dir auch nichts hinsichtlich mod_rewrite unterstellen :wink: Öfters tauchen hier im Forum eben nur Fragesteller auf, die die Syntax noch gar nicht kennen (und kennenlernen wollen) und nur schnell eine Lösung brauchen. Daher schreibe ich manchmal "Übersetzungen" dazu.

Inzwischen ist mir auch ein wenig der Sinn der ersten Zeile in den Sinn gekommen, nach Deinem Fingerzeig bzgl. des Kommentars. Die Idee der Remoteaddress ist für inkludierte Dateien eine gute Idee.

Viel Erfolg,

Chris

PS: Habs gerade nochmal auf Deiner Seite ausprobiert. Ist der zweite Block, also

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/login\.php$ [OR]
RewriteCond %{REQUEST_URI} ^/create_account\.php$ [OR]
RewriteCond %{REQUEST_URI} ^/account\.php$ [OR]
RewriteCond %{REQUEST_URI} ^/checkout_shipping\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301] 
denn auch bei Dir aktiv? Denn leider tritt bisher nicht der gewünschte Effekt ein (welcher wäre: www.domain.de/login.php wird umgeleitet auf https://ssl.kundenserver.de/domain.de/login.php )

Falls er aktiv ist, aber eben trotzdem nicht funktioniert, könntest Du mal versuchen, jede diese URLs einzeln zu listen, also

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/login\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301] 

RewriteCond %{REQUEST_URI} ^/create_account\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301] 

RewriteCond %{REQUEST_URI} ^/account\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301]

RewriteCond %{REQUEST_URI} ^/checkout_shipping\.php$
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl\.kundenserver\.de$
RewriteRule ^(.*)$ https://ssl.kundenserver.de/domain.de/$1 [R=301] 

jmb1972
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 14.04.2008, 10:47

Beitrag von jmb1972 » 16.04.2008, 18:24

Hi Chris,

ich geh mal davon aus das du das login direkt in die Adresszeile eingegeben hast. Denn wenn man auf Kundenkonto oder auf anmelden bzw. auf Ihr Konto rechts oben klickt, dann wird man auf SSL weitergeleitet. Oder hab ich da doch noch was übersehen.? Andererseits, wer gibt schon das login in die Adresszeile ein? Andererseits, wenn sich jemand die login URL in die Favoriten legt, dann könnte die login ohne SSL aufgrufen werden. Probier ich gleich mal aus...

Gruß Jens

Zusatz: Der Fall mit den Favoriten, den hatte ich nicht bedacht. Der kommt ohne SSL daher. Ich werds gleich mal versuchen zu ändern...

Jetzt gehts. Besten Dank nochmal Chris

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag