nginx 简单正则表达式位置

nginx 简单正则表达式位置

如果 URL 的前 5 位数字是数字,则我需要在 nginx 中设置位置参数。

site.com/12345/ or site.com/12345

但我似乎无法得到正确的正则表达式。

这些都不起作用。

location ^/([0-9]) { }
location ^/(\d\d\d\d\d) {}
location /(\d\d\d\d\d) {}

答案1

尝试这个

location ~ "^/[\d]{5}" {
    # ...
}

~表示正则表达式的位置

^表示行的开头

[\d]是字符类匹配数字的简写

{5}表示数字必须正好是五位,不多也不少

()如果你不想使用分组,则不需要括号,例如 $ 1

双引号,因为正则表达式中使用的花括号必须用双引号引起来:https://stackoverflow.com/questions/14684463/curly-braces-and-from-apache-to-nginx-rewrite-rules

答案2

尝试这个语法(在我的服务器上测试):

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

相关内容