convert lighttpd to nginx rewrite rules

user3355434 asked:

I’m trying hard to make my code work on nginx. This configuration works with lighttpd but I want migrate it to nginx.

Rewrite rules on lighttd :

url.rewrite-once = (
 "^/(ui)/(.*)$" => "/gi.php/$1/$2",
 "/(.*).(.*)" => "$0",
 "/(xhr|js-api)/(.*)" => "$0",
 "^/([^.]+)$" => "/gi.php/$1"
)

Can anyone help in this conversion? I tried using lot of things, including converting it to apache rewrite rules, but none of them worked.

Nginx rule:

if (!-f $request_filename){
       set $rule_0 1$rule_0;
}
if (!-d $request_filename){
       set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
       rewrite ^/(.*)$ /gi.php/$1 last;
}

Error : 404

Any suggestions?

My answer:


You don’t generally do rewrites in nginx, the same way you do them in Apache or lighttpd. Most such things should be replaced with try_files instead.

A trivial example:

try_files $uri $uri/ /gi.php

See the nginx documentation for more details.


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.