Multipule Map modules

What i would like to do is like Apache is to use multiple map files and
get the vars form them

i have tried the following and can only get one value $variable1
what is a rewrite to get $variable1 and $variable2 in one rewrite

rewrite ^(^/)/(.)$ /index.php?key1=$variable1&key2=$variable2 last;

map $uri $variable1 {
default 11;
/sub 7;

}
map $uri $variable2 {
default 78;
/pep 23;
}

Regards, David

Posted at Nginx Forum:

On 7 Nov 2011 20h54 WET, [email protected] wrote:

What i would like to do is like Apache is to use multiple map files
and get the vars form them

i have tried the following and can only get one value $variable1
what is a rewrite to get $variable1 and $variable2 in one
rewrite

rewrite ^(^/)/(.)$ /index.php?key1=$variable1&key2=$variable2
last;

What are you trying to accomplish?

map $uri $variable1 {
default 11;
/sub 7;

If your URI is /sub $variable1 becomes 7.

}
map $uri $variable2 {
default 78;
/pep 23;
}

If your URI is /sub $variable2 becomes 23.

It works as it should. I don’t see any issue. Also your rewrite is
unnecessary. Try this:

return 301 /index.php?key1=$variable1&key2=$variable2;

Do you mean that the request URI can contain both /pep and /sub?Like
this:

http://example.com/sub/pep/other-stuff-if-any

If so then your matching must be done with a regex:

map $uri $variable1 {
default 11;
~/sub 7;
}

map $uri $variable2 {
default 78;
~/pep 23;
}

— appa

On Mon, Nov 07, 2011 at 03:54:24PM -0500, token wrote:

Hi there,

What i would like to do is like Apache is to use multiple map files and
get the vars form them

i have tried the following and can only get one value $variable1
what is a rewrite to get $variable1 and $variable2 in one rewrite

rewrite ^(^/)/(.)$ /index.php?key1=$variable1&key2=$variable2 last;

I confess I’m not sure exactly what it is you are trying to do.

For certain urls, grab parts of the url and send them as-is within
QUERY_STRING to a php-processor? (In which case: doing the grabbing in
the location definition is probably easiest.)

Or grab parts of the url, and set other values in QUERY_STRING based
on the url parts? (In which case, matching on $uri at server level and
using the map-ped value within the location block is probably easiest.)

Or maybe something else?

map $uri $variable1 {
default 11;
/sub 7;

}
map $uri $variable2 {
default 78;
/pep 23;
}

The map documentation is at Module ngx_http_map_module
and there’s an example of if/set/map in the thread at
Using map and proxy_pass

And there are examples of php-without-rewrite around as well – in the
location block, set “fastcgi_param SCRIPT_FILENAME” explicitly, as well
as fastcgi_pass.

Good luck,

f

Francis D. [email protected]

Hi, António that is exactly wath is was trying to accomplish id didn’t
know i had to use the “~” at the beginning of the map key.
Thank you

Do you mean that the request URI can contain both /pep and /sub?Like
this:

http://example.com/sub/pep/other-stuff-if-any

If so then your matching must be done with a regex:

map $uri $variable1 {
default 11;
~/sub 7;
}

map $uri $variable2 {
default 78;
~/pep 23;
}

Posted at Nginx Forum: