$ _COOKIE [] и RewriteRule на Apache не работают при совместном использовании? - PullRequest
0 голосов
/ 08 февраля 2011

У меня странная ошибка, когда я устанавливаю и получаю куки после перезаписи URL. Это правило перезаписи, которое я использую:

RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /$1/$2/ [R]
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)/$ /index.php?destination=$1&command=$2

И вот что я делаю, чтобы распечатать печенье:

var_dump($_COOKIE);

У меня также есть логин, который устанавливает надлежащие куки, и выход из системы, который истекает куки.

Логин: setcookie("USERNAME", "usernamestring", time()+3600);

Logoff: setcookie("USERNAME", "0", time()-3600);

Когда я захожу на www.remoteaccessnow.com, файлы cookie не имеют значения. Когда я захожу на сайт www.remoteaccessnow.com/accounts/, файлы cookie не имеют значения.

Это делается во время той же сессии. Ошибка возникает в Chrome 9, Firefox 3+ и IE8.

Если я вообще не использую правило перезаписи, проблем не возникает, и файлы cookie являются постоянными во всех «под-URL». Я не знаю, что вызывает эту проблему. Похоже, что «процессор cookie» рассматривает www.remoteaccessnow.com и www.remoteaccessnow.com/accounts/ как два разных домена.

Я ищу совет о том, как сохранить cookie-файлы согласованными для всех под-URL моего домена.

1 Ответ

2 голосов
/ 08 февраля 2011

Используйте четвертый параметр cookie для '/', чтобы он был доступен во всех каталогах домена.

setcookie("USERNAME", "usernamestring", time()+3600,'/');

Если установлено значение '/', файл cookie будет доступенв пределах всего домена.Если установлено значение «/ foo /», файл cookie будет доступен только в каталоге / foo / и во всех его подкаталогах, таких как / foo / bar / домена.Значением по умолчанию является текущий каталог, в котором устанавливается cookie.

Подробнее см. http://php.net/manual/en/function.setcookie.php

...