今天我在配置 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]+/,或者您是否需要捕获的元素?