nginx 正则表达式字符需要引用吗?

nginx 正则表达式字符需要引用吗?

今天我在配置 nginx 时遇到了一个奇怪的问题。我尝试匹配如下位置:

location ~ ^/([0-9]+)/(.*) {
    # do proxy redirects
}

...对于类似“http://my.domain.com/0001/index.html“。

这条规则从来就没有匹配过,尽管它本来就应该匹配。我花了一段时间才弄清楚,基于本文档,正则表达式中的某些字符需要用引号引起来。问题是,文档是针对重写的,它特别提到了花括号,而不是方括号。经过大量实验,包括大量咒骂,我发现我可以通过像这样引用正则表达式来解决这个问题:

location ~ "^/([0-9]+)/(.*)" {
    # do proxy redirects
}

nginx 是否需要引用正则表达式的字符列表?或者这里可能还有其他我完全没有注意到的事情?这是我的第一个 nginx 配置工作,因此很可能我误解了某些内容...

答案1

您需要号码吗?我会先尝试一个更简单的变体,看看错误是否可能是其他原因。

我会尝试 ^/[0-9]+/,或者您是否需要捕获的元素?

相关内容