我正在努力使我的代码在 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 文档。