![nginx 正则表达式字符需要引用吗?](https://linux22.com/image/563898/nginx%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%AD%97%E7%AC%A6%E9%9C%80%E8%A6%81%E5%BC%95%E7%94%A8%E5%90%97%EF%BC%9F.png)
今天我在配置 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]+/,或者您是否需要捕获的元素?