在 try_files 指令中使用 $uri 和 $uri$args 有什么区别
What is difference between using $uri and $uri$args in try_files directive
对于我的其他 Angular 应用程序,我使用以下配置,一切似乎都运行良好。
location / {
try_files $uri$args $uri$args/ /index.html;
}
现在我正在使用的文件夹在 dist 文件夹中有嵌套文件夹。
文件夹结构如下:
dist \
-- assets
-- folder1
-- folder2
-- folder3
-- folder4
-- folder5
index.html
index.html
并且内部 index.html 是使用查询参数调用的,而 url 将类似于 - <ip>/folder1/folder2/index.html?a=1&b=2&c=3
。但这是在根位置返回回退 index.html 。后来我把上面的location块改成这样就可以正常使用了
location / {
try_files $uri $uri/ /index.html;
}
所以我不清楚为什么第一个位置块不起作用。我在文档中找不到任何内容 - try_files
try_files
语句 除了最后一个参数 之外的所有参数都在本地文件系统中查找文件名。
因此,给定 URI /foo/bar
,术语 $uri$args
将在 /path/to/root/foo/bar
搜索本地文件,如果不存在,将转到下一个术语或语句末尾的默认子句。
在上述情况下,$args
为空。但是,给定 URI /foo/bar?baz
,术语 $uri$args
将在 /path/to/root/foo/barbaz
.
搜索本地文件
我不知道为什么有人会在 try_files
语句中使用 $uri$args
或 $uri$args/
作为文件术语,但很可能有一个合法的用例。
try_files
语句的最后一个参数是特殊的。它可以是状态代码(例如 =404
)、要分支到的命名位置或 URI。
对于 URI,Nginx 将内部 重定向到该 URI。一个典型的例子可能是 /index.php$isargs$args
- 在这种情况下,附加 $args
参数是完全合法的,因为我们正在创建一个新的 URI 并保留原始参数字符串。
详情见this document。
对于我的其他 Angular 应用程序,我使用以下配置,一切似乎都运行良好。
location / {
try_files $uri$args $uri$args/ /index.html;
}
现在我正在使用的文件夹在 dist 文件夹中有嵌套文件夹。
文件夹结构如下:
dist \
-- assets
-- folder1
-- folder2
-- folder3
-- folder4
-- folder5
index.html
index.html
并且内部 index.html 是使用查询参数调用的,而 url 将类似于 - <ip>/folder1/folder2/index.html?a=1&b=2&c=3
。但这是在根位置返回回退 index.html 。后来我把上面的location块改成这样就可以正常使用了
location / {
try_files $uri $uri/ /index.html;
}
所以我不清楚为什么第一个位置块不起作用。我在文档中找不到任何内容 - try_files
try_files
语句 除了最后一个参数 之外的所有参数都在本地文件系统中查找文件名。
因此,给定 URI /foo/bar
,术语 $uri$args
将在 /path/to/root/foo/bar
搜索本地文件,如果不存在,将转到下一个术语或语句末尾的默认子句。
在上述情况下,$args
为空。但是,给定 URI /foo/bar?baz
,术语 $uri$args
将在 /path/to/root/foo/barbaz
.
我不知道为什么有人会在 try_files
语句中使用 $uri$args
或 $uri$args/
作为文件术语,但很可能有一个合法的用例。
try_files
语句的最后一个参数是特殊的。它可以是状态代码(例如 =404
)、要分支到的命名位置或 URI。
对于 URI,Nginx 将内部 重定向到该 URI。一个典型的例子可能是 /index.php$isargs$args
- 在这种情况下,附加 $args
参数是完全合法的,因为我们正在创建一个新的 URI 并保留原始参数字符串。
详情见this document。