web-dev-qa-db-ja.com

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) {}
8

これを試して

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

~は、正規表現の場所を意味します

^は行の始まりを意味します

[\d]は文字クラスに一致する数字の省略形です

{5}は、数字が正確に5桁以上でなければならないことを示しています。

および() $ 1などのグループ化を使用しない場合は、括弧は不要です。

正規表現で使用される中括弧は二重引用符で囲む必要があるため、二重引用符で囲みます: https://stackoverflow.com/questions/14684463/curly-braces-and-from-Apache-to-nginx-rewrite-rules =

15
cadmi

次の構文を試してください(私のサーバーでテスト済み):

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