我需要将 IIS 重写规则转换为 NGinX 重写。我取得了一点进展,因为我不知道如何转换 IIS 规则的部分内容。这是我的 IIS 配置:
- 匹配模式:^(.*)$
- 重写 URL:index.html 并附加查询字符串
- 条件:全部匹配
- REQUEST_URI 与模式“/api(.*)$ 忽略大小写”不匹配
- REQUEST_FILENAME 不是文件
到目前为止,我在 NGinX 上所做的是
location / {
root html;
index index.html index.htm;
if ($request_uri !~ "/api(.*)$")
{
rewrite ^(.*)$ index.html
}
}
我认为我必须使用变量 $request_filename,但是我不知道如何使用它来像在 IIS 上一样过滤文件并将其放入 AND 逻辑运算中的 if 条件中。
答案1
这是前端控制器模式的典型示例,其在 nginx 中的实现如下:
location / {
try_files $uri $uri/ /index.html$is_args$args;
}
这将使 nginx 首先查找文件,如果未找到文件,则它会发送请求/index.html
并附加可能的查询参数。
/api
然后为您的URI指定不同的规则:
location /uri {
... API handling rules ...
}
如果没有更多信息,这就是我能写的最多答案。