nginx rewrite rules conditional once again

Malte Geierhos malte at snapscouts.de
Tue Jun 29 19:27:20 MSD 2010


 Hi List,

I've got to convert some Apache Rewrite Rules to work with nginx.
And i got kind of stuck in between how to solve this.

The old rewrite rule is like this :

      RewriteCond %{REQUEST_URI} !/[0-9]+$
      RewriteCond %{REQUEST_URI} ^/(articles|people)/favorites
      RewriteRule   ^(articles|people)/(.*)/$  /$1/$2/1/25  [R=301,L]
     
      ### /fragen/beliebte
      RewriteCond %{REQUEST_URI} !/[0-9]+$
      RewriteCond %{REQUEST_URI} ^/(articles|people)/favorites
      RewriteRule   ^(articles|people)/(.*)  /$1/$2/1/25  [R=301,L]

so basically its catching those with ^/articles/favorites/what and
^/articles/favorites/
and append /1/25 and most important - ignore when there is already /2/40
or whatever.

At first i was looking into solving it with a location with something
like :

location ~* ^/(articles|people)([^/]*)$ {
    rewrite ^/(articles|people)/(.*)$  /$1/$2/1/25;
}

but this did not work out as expected.
My next idea was to try to catch $2/$3 and see if its a number

like :

location ~* ^/(articles|people)/(.*)$ {
         if ( $request_arg !~  [0-9]) {
               rewrite ^/(articles|people)/(.*)$  /$1/$2/1/25;
        }
}

hm but now i'm stuck.
Anyone got an idea ?

regards,
Malte




More information about the nginx mailing list