воскресенье, 8 июня 2008 г.

Устанавливаем куки через mod_rewrite

Одна из приятных фичей в апаче, начиная с версии 2.x - это возможность устанавливать cookie без всяких внешних скриптов, прямо через mod_rewrite.

Пример (кусок кода из - не уверен, что будет работать в .htaccess, там несколько свои правила.

RewriteEngine on
RewriteCond %{QUERY_STRING} param=(.*)
RewriteRule ^(.*)$ $1? [L,R,CO=mycookie:%1:.mydomain.com]

Эти правила, если серфер заходит на наш сервер через URL

http://www.mydomain.com/somefile?param=PARAM_VAL

перенаправят его на

http://www.mydomain.com/somefile

установив куку "mycookie" в значение PARAM_VAL.

Обратите внимание на второй параметр в RewriteRule. Тот, который "$1?". Хитрость - в вопросительном знаке после $1. Я не знаю, почему (судя по документации, такого эффекта быть не должно), но без него происходит редирект на оригинальный URL, вместе со всеми параметрами %{QUERY_STRING}... что, само собой, ведет к зацикливанию редиректа. Во всяком случае, это имеет место быть у меня на apache 2.2, как на Vista, так и на FreeBSD 6.2

Комментариев нет: