我花了几个小时试图弄清楚 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;
}