www oder nichtwww? - Login-/Session-Problem im Frontend

Gesperrt
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

www oder nichtwww? - Login-/Session-Problem im Frontend

Beitrag von xmurrix »

Hallo zusammen,

unter gewissen Umständen kann es vorkommen, dass der initiale Aufruf einer Mandantenseite, gefolgt von einem Loginversuch als Frontenduser, durch das Versenden des Loginformulars, nicht funktioniert. Es kann passieren, dass das Standard-Loginformular im Frontend angezeigt wird, genauso wie bei einem fehlerhaften Loginversuch.

Die Ursache dazu kann sein, dass die Domain der initialen Seite nicht identisch mit der Domain der Seite war, zur der das Formular versendet wurde.

Dazu muss man wissen, dass CONTENIDO beim initialen Aufruf der Frontendseite die Session erstellt und die Session-ID per Cookie an den Browser schickt, und dieses Cookie ist an die Domain gebunden, d. h. es ist unter einer anderen Domain nicht gültig.

Hat man z. B. die Einstellung zum Generieren des base-Tag aktiviert, wird von CONTENIDO die Web-Adresse des Mandanten im base-Tag ausgegeben, z. B.:

Code: Alles auswählen

<base href="http://www.mydomain.com/cms/" />
Auf der ausgegebenen Seite gehe alle internen Links oder Formulare auf interne Seite an die Domain "www.mydomain.com". Nun, eigentlich alle Hoster unterstützen den Aufruf der Domain mit und ohne "www.", man kann also die gleiche Domain unter folgenden Arten erreichen:

Code: Alles auswählen

http://www.mydomain.com
http://mydomain.com
Zu dem Problem, um das es in diesem Thread geht, kommt es, wenn man z. B. das Frontend mit http://mydomain.com aufruft, aber das Loginformular an http://www.mydomain.com versendet wird.

Beim initialen Aufruf der Seite mit der Domain "mydomain.com" bekommt der Browser das Cookie für diese Domain. Versucht man nun sich Anzumelden und sendet das Loginformular ab, geht die Anfrage an die Domain "www.mydomain.com". Das Cookie wurde vorher für "mydomain.com" erstellt und ist nicht gültig für "www.mydomain.com". Der oginversucht schlägt somit fehl, obwohl die Zugangsdaten korrekt sind.

Da das Verhalten auf Browserseite nicht geändert werden kann, also Browser für die Domain "mydomain.com" gesetzte Cookies nicht zusammen mit der Domain "www.mydomain.com" teilen, muss man sich Serverseitig was überlegen.

Idealerweise sorgt man dafür, dass die Webseite nur unter einer Version erreichbar ist. Das geht mit einer Regel in der .htaccess wie folgt:

Code: Alles auswählen

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain.de [NC]
RewriteRule ^(.*)$ http://www.mydomain.de/$1 [L,R=301]
Wenn man diese Zeilen in die .htaccess Datei einfügt, werden alle Anfragen, die auf die Domain "mydomain.de" gehen, zur Domain "www.mydomain.de" umgeleitet.

Das Beispiel ist einfach gehalten und behandelt z. B. keine Anfragen mit HTTPS oder andere TLD wie .com, .eu usw...

So kann kein Cookie für "mydomain.de" erstellt werden, was auf der nächsten Seite "www.mydomain.de" nicht mehr gültig ist.
Es ist außerdem eine Optimierungsmaßnahme, da dadurch keine unnötigen Sessions generiert werden, die auf der nächsten Seite nicht mehr brauchbar sind.

www oder nicht www? Eine kleine Frage mit manchmal großer Wirkung...

Grüße
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
kleinod
Beiträge: 12
Registriert: Mo 13. Feb 2012, 12:40
Kontaktdaten:

Re: www oder nichtwww? - SEO

Beitrag von kleinod »

Hallo xmurrix,

kleiner Nachtrag:
unabhängig von Formularen ect. sollte die Erweiterung in der .htaccess auf alle Fälle für sie Suchmaschinenoptimierung gemacht werden.
Ansonsten versteht google es wegen der unterschiedlichen URLs als 2 unterschiedliche Seiten, bestenfalls wird man wegen double-content abgestraft.

Und leider kommt erschwerend für Anfänger (Pixelschubser, nicht Programmierer) hinzu, dass man oft das technische Kauderwelsch der Provider nicht versteht. So ist z.B. bei hosteurope zwar fürs "M"-Paket rewrite-Rules möglich, Zugriff auf die .htaccess hat man aber erst ab dem nächst größeren Paket.

VG
Gunnar
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: www oder nichtwww? - Login-/Session-Problem im Frontend

Beitrag von xmurrix »

Danke für den hilfreichen Nachtrag, das Vermeiden von Duplicate-Content ist auch ein wichtiger Aspekt.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Gesperrt