2010-10-20 5 views
3

J'utilise une session pour gérer certaines variables entre différentes pages de mon site. Bien que cela fonctionne correctement lorsque je passe de www.example.com/a à www.example.com/b, les variables de session sont perdues si je passe de example.com/a à www.example.com/bSession non maintenue entre mysite.com et www.example.com

Une idée de comment je peux m'assurer que la session est maintenue indépendamment de www ou non www?

Le site Web ajoute un www car il navigue vers des pages différentes mais les pages sont accessibles sans cela. Ainsi, si quelqu'un tape manuellement une adresse et omet cette partie, puis accède à la page b (en cliquant sur un lien ou en envoyant un formulaire), les variables de session sont perdues.

Répondre

5

La façon raisonnable de le faire est en redirigeant example.com-www.example.com; par cela vous vous assurez que tous vos visiteurs sont dans www.example.com, et les robots d'indexation n'indexeront pas deux pages avec le même contenu.

Vous le faire en envoyant un 301: Moved Permanently aux utilisateurs qui accèdent example.com (en supposant que vous utilisez apache, vous devez ajouter à votre .htaccess):

Redirect 301 http://example.com/ http://www.example.com/ 

Deuxième version:

Redirect 301 http://example.com/(.*) http://www.example.com/$1 

Désolé, celui-ci est exact:

Options +FollowSymlinks 
RewriteEngine on 

rewritecond %{http_host} ^example.com [nc] 
rewriterule ^(.*)$ http://www.example.com/$1 [r=301,nc] 

glanées ici http://www.webconfs.com/how-to-redirect-a-webpage.php

+0

+1 - c'est la façon plus propre de le faire, en supposant que www.mysite.com est le même site logiquement que mysite.com – tobyodavies

+0

Merci. Je vais aller avec ça. Juste une question - Si je passe un paramètre avec une URL (qui n'a pas de www), la redirection transmettra-t-elle automatiquement le paramètre à l'URL www? – lostInTransit

+0

ne sais pas à coup sûr, mais la deuxième version devrait. –

2

vous devez vous assurer que le cookie est réglé sur .example.com pas www.example.com à l'aide session_set_cookie_params, le paramètre spécifique 3 - le domaine dans le documentation

+2

Définition du domaine « .example.com » aurait plus de sens s'il veut que les valeurs de la session soient disponibles dans les deux domaines. – mellowsoon

+0

oui, c'est ce que je voulais dire! édité, merci – tobyodavies

0

L'ID de session est stockée dans un cookie. Les cookies ne sont pas transférés du sous-domaine au sous-domaine (par exemple, www.somesite.com à somesite.com). Vous pouvez modifier les params cookie avec session_set_cookie_params() ou php.ini

Questions connexes