Rewrite url based on cookie

Igor Sysoev is at rambler-co.ru
Wed Jan 24 11:21:03 MSK 2007


On Wed, 24 Jan 2007, Jonathan Vanasco wrote:

> On Jan 24, 2007, at 1:21 AM, Igor Sysoev wrote:
>
>> On Wed, 24 Jan 2007, Jason B wrote:
>>> RewriteRule ^index.html$ index%{HTTP_COOKIE['cookieName']}.html
>> 
>>       location = /index.html  {
>>           set  $name  "";
>>           if ($http_cookie ~ "cookieName=([^;]+)(?:;|$)") {
>>               set  $name  $1;
>>           }
>>           index  index$name.html;
>>       }
>
>
> would this also work?
>
> if ($http_cookie ~ "cookieName=([^;]+)(?:;|$)") {
> 	rewrite index$1 ;
> }

No, the $1 inside the "rewrite" directive is possible rewrite's capture.

You may use

if ($http_cookie ~ "cookieName=([^;]+)(?:;|$)") {
     set  $name  $1;
     rewrite ^/index.html$  index$name.html;
}

I was wrong with

       location = /index.html  {
           set  $name  "";
           if ($http_cookie ~ "cookieName=([^;]+)(?:;|$)") {
               set  $name  $1;
           }
           index  index$name.html;
       }

because the "index" directive is useless in the "location = /index.html".
It has meaning inside "location = /", "location ~ /$", or "location /".


Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list