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/" />
Code: Alles auswählen
http://www.mydomain.com
http://mydomain.com
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]
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