2010-10-20 4 views
3

Я использую сеанс для поддержания некоторых переменных между разными страницами на моем сайте. Хотя он отлично работает, когда я переезжаю с www.example.com/a на www.example.com/b, переменные сеанса теряются, если я перехожу от example.com/a к www.example.com/bСессия не поддерживается между mysite.com и www.example.com

Любая идея, как я могу убедиться, что сеанс поддерживается независимо от www или нет www?

Веб-сайт добавляет WWW, поскольку он перемещается на разные страницы, но страницы доступны без этого. Поэтому, если кто-то вручную вводит адрес и опускает эту часть, а затем переходите на страницу b (путем нажатия ссылки или отправки формы), переменные сеанса теряются.

ответ

5

разумным способом сделать это за счетом перенаправления example.com в www.example.com; тем самым вы убедитесь, что все ваши посетители находятся в www.example.com, а сканеры не будут индексировать две страницы с одним и тем же контентом.

Вы что, отправив 301: Moved Permanently для доступа пользователей к example.com (предполагая, что вы используете Apache, вы должны добавить к вашей .htaccess):

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

Вторая версия:

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

К сожалению, этот правый:

Options +FollowSymlinks 
RewriteEngine on 

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

Взято отсюда http://www.webconfs.com/how-to-redirect-a-webpage.php

+0

+1 - это более чистый способ сделать это, предполагая, что www.mysite.com - это тот же сайт логически, что и mysite.com. – tobyodavies

+0

Спасибо. Я пойду с этим. Только один вопрос. Если передать параметр с URL-адресом (который не имеет WWW), перенаправит ли этот параметр автоматически URL-адресу? – lostInTransit

+0

не знаю точно, но вторая версия должна. –

2

вам необходимо убедиться, что куки быть установлен в .example.com не www.example.com с помощью session_set_cookie_params, в частности, параметр 3 - домен в documentation

+2

Настройка домена для «.example.com» имело бы больше смысла, если он хочет значения сессии будут доступны в рамках обоих доменов. – mellowsoon

+0

да, вот что я имел в виду! отредактировал, спасибо – tobyodavies

0

идентификатор сеанса хранится в куки. Куки-файлы не переносятся из субдомена в субдомен (например, www.somesite.com на somesite.com). Вы можете изменить печенье Params с session_set_cookie_params() или php.ini

Смежные вопросы