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
On Tue, Jun 29, 2010 at 10:27 PM, Malte G. [email protected]
wrote:
hm but now i’m stuck.
Anyone got an idea ?
location ~* ^/(articles|people)/([^0-9]+)$ { … }
–
O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
On Tue, Jun 29, 2010 at 05:27:20PM +0200, Malte G. wrote:
At first i was looking into solving it with a location with something
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 ?
You think in a backward logic. Try a forward logic: what should be done
for
/articles/favorites/1/25
and
/articles/favorites/2/40
?
location ~ ^/(articles|people)/[0-9]/[0-9]$ {
...
}
location ~ ^/(articles|people)/(.*)$ {
rewrite ^/(articles|people)/(.*)$ /$1/$2/1/25 permanent;
# or 0.8.42+:
#return 301 http://$1/$2/1/25;
}
–
Igor S.
http://sysoev.ru/en/
On Wed, Jun 30, 2010 at 03:44:44PM +0530, Rahul B. wrote:
nginx.
But then one day, I just analyzed input used and output produced by apache
rules and in few hours I solved that problem is myself.
Switching from apache to nginx is as complex as switching form windows to
linux/mac.
If you start solving any problem with old knowledge you will always find
things difficult. 
This is not Apache issue, this is a wrong practice to configure anything
with sendmail-style RewriteRules. BTW Apache is built by default without
mod_rewrite, you have to --enable-rewrite.
–
Igor S.
http://sysoev.ru/en/
You think in a backward logic. Try a forward logic: what should be done for
Agree with this!
As a general rules, when writing nginx config, we better think from
*scratch
*.
It happened to me that I came across some very complex apache rules and
ended up sitting idle because I couldn’t find their direct conversion in
nginx.
But then one day, I just analyzed input used and output produced by
apache
rules and in few hours I solved that problem is myself.
Switching from apache to nginx is as complex as switching form windows
to
linux/mac.
If you start solving any problem with old knowledge you will always find
things difficult. 
-Rahul