【发布时间】:2023-04-04 20:52:01
【问题描述】:
使用php Slim框架,结构如下:
/root
/dir_parent_1/
/dir_child_1
/index.php
/dir_parent_2
/index.php
/root/dir_parent_1/dir_child_1/index.php 有 users 路由,并且
/root/dir_parent_2/index.php 有 clients 路由。
我如何编写 Nginx 位置以匹配两种可能的组合?
我试试:
location ~ ^/root/(\w+)
{
try_files $uri /gestionhospitales/api/$1/index.php?$query_string;
}
location ~ ^/root/(\w+)/(\w+)
{
try_files $uri /gestionhospitales/api/$1/$2/index.php?$query_string;
}
但它们是相互排斥的。去“/root/dir_parent_1/dir_child_1/users”匹配第一个规则(因为它是第一个。如果我颠倒顺序,则匹配第二个),
我也开始为这两种情况编写规则,但我不知道如何完成它:
location ~ ^/root/(\w+)?/(\w*)
{
try_files $uri /gestionhospitales/api/$1/$2/index.php?$query_string;
# tried with if, rewrite, etc. But i'm not nginx expert.
}
提前致谢。
【问题讨论】:
-
Nginx 优先位置不依赖于顺序,它首先选择声明位置中的最长路径,阅读docs并更新问题跨度>