将 lighttpd 转换为 nginx 重写规则

将 lighttpd 转换为 nginx 重写规则

我正在努力使我的代码在 nginx 上运行。此配置适用于 lighttpd,但我想将其迁移到 nginx。

lighttd 上的重写规则:

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

有人能帮忙进行转换吗?我尝试了很多方法,包括将其转换为 apache 重写规则,但都不起作用。

Nginx 规则:

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

有什么建议么?

答案1

您通常不会在 nginx 中执行重写,就像在 Apache 或 lighttpd 中执行重写一样。大多数此类操作应替换为try_files

一个简单的例子:

try_files $uri $uri/ /gi.php

有关更多详细信息,请参阅 nginx 文档。

相关内容