NGINX 清理 URL 重写。怎么做?

NGINX 清理 URL 重写。怎么做?

我花了几个小时试图弄清楚 NGINX在 Apache 中什么是极其简单的任务

我累死...

我已经安装了 NGINX。

html是个文件夹。

JSON 内部接口

html
html/api
html/api/v1
html/api/v1/getUsers.php

HTML 外部接口

html
html/gui
html/gui/v1
html/gui/v1/get/users/1001

我有一个工作位置块,它说明了最终目标。

location = /get/users/1001 {

  add_header Content-Type text/plain;
  return 200 'This non physical URL path needs to point to html/api/v1/getUsers.php?userId=1001';

}

一个人怎么能做到这一点。我真的要回到 Apache 并且永不回头。

下面是我在 Apache 中完美完成此任务的示例将以下 Apache 指令放入位于html/gui/v1

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^get/users/(\d+)/?$ getUser.php?userId=$1 [L]

答案1

Nginx 改写指令的工作方式与 Apache2 中的几乎相同RewriteRule。因此,您只需要:

location / {
    rewrite ^/get/users/(\d+)/?$ /getUsers.php?userId=$1 last;
}
location ~ \.php$ {
    # PHP-FPM config
}

或者,如果你愿意命名捕获

location / {
    rewrite ^/get/users/(?<userId>\d+)/?$ /getUsers.php?userId=$userId last;
}

所有 URI 路径都是绝对的。

由于您在标题中提到了正则表达式的位置,因此您的示例可以概括为:

location ~ ^/get/users/(\d+)/?$ {
    add_header Content-Type text/plain;
    return 200 /getUsers.php?userId=$1;
}

相关内容