我目前正在使用以下位置指令和try_files来完成一个restfull应用程序:
getMethodName()
其中location /branches/branchx/app/api/ {
try_files $uri $uri/ /branches/branchx/app/api/api.php$is_args$args;
}
是我的Git分支的名称。因此,我可能有多个分支,例如:branchx
,branch1
等。
因此我需要为我将创建的每个分支手动创建一个指令。
为了避免这个问题,我希望使用正则表达式来提取分支名称并在我的try_files指令中使用它。所以我有一个由单个位置管理的动态系统指示照顾所有分支机构。
到目前为止,在try_files中使用正则表达式的所有尝试最终都会抛出405或404错误。
我的最后一次尝试(基于@Richard Smith回答):
branch2
返回了匹配uri的405(不允许)响应。
答案 0 :(得分:1)
如果您使用正则表达式location
,则可以同时捕获路径。例如:
location ~ ^(/branches/[^/]+/app/api)/ {
try_files $uri $uri/ $1/api.php$is_args$args;
}
重要说明:从前缀location
更改为正则表达式location
将更改评估顺序。正则表达式location
块按顺序进行评估,因此/branches/branchx/app/api/api.php
将匹配此location
块,除非它位于location ~ \.php$
位置块之后。有关详细信息,请参阅this document。