无论 nginx 中的名称如何,所有位置路径的单个正则表达式?

a single regex for all location paths regardless of the name in nginx?

我们有一个 angular 应用托管在 nginx 上,它使用随机 url 路径。我正在尝试编写一个正则表达式来匹配它们,以将它们重定向到一个通用的 index.html 文件。 这意味着到

的所有流量
domain.com/abc
domain.com/xyz

应该全部转到 index.html 文件。 这是我一直在尝试的:

location ~* ^/[a-z](.+)$ {
rewrite ^ /index.html last;
try_files $uri $uri/ /index.html;
}

这行不通。请帮忙。

这绝不是一个答案,但评论可能太长了。

我想发生的事情是重写规则正在触发(我不知道这是你的规则还是我建议的更改)。可能发生的情况是请求被重定向到 /index.html,正如预期的那样,但是,/index.html 满足正则表达式,如 here 所示。这将导致无限循环,我想这就是 internal redirection cycle 的意思。

要解决此问题,您可以尝试这样的操作:\/(?!index\.html).+(例如 here)。这将确保 index.html 不是您要匹配的字符串的一部分。这应该打破循环。