/ / nginx location Regex mit geschweiften Klammern und AnfĂŒhrungszeichen funktioniert nicht - Regex, Nginx

Regex mit geschweiften Klammern und AnfĂŒhrungszeichen funktioniert nicht - Regex, Nginx

Ich habe eine Seite, die auf Nginx lÀuft. Ich muss URLs wie diese umschreiben:

domain.com/blabla/88-aaa-aaaaa-aaaa/qqqq-qqq11-2qq-qqq.html

dazu

domain.com/blabla/aaa-aaaaa-aaaa/qqqq-qqq11-2qq-qqq

es bedeutet - entfernen Sie die Zahl nach dem SchrÀgstrich, gefolgt von einem Bindestrich und der Erweiterung ".html".

Um das zu erreichen, habe ich versucht, zu verwenden

location ~* /[0-9]{1,4}(-.*)(.html)$ {
......
}

Im Ortungstester wird der Bindestrich jedoch vollstĂ€ndig ignoriert und es werden Übereinstimmungen gefunden .../88aaa... , was ich vermeiden möchte. Dann las ich, dass, wenn der Ausdruck geschweifte Klammern enthĂ€lt, einfache oder doppelte AnfĂŒhrungszeichen um den Ausdruck verwendet werden mĂŒssen. Also habe ich es versucht

location ~* "/[0-9]{1,4}(-.*)(.html)$" {
......
}

Immer noch kein GlĂŒck ... Mit den AnfĂŒhrungszeichen stimmt es in beiden FĂ€llen nicht mit dem Standort ĂŒberein. Könnte jemand bitte helfen?

Antworten:

0 fĂŒr Antwort № 1

Die Lösung, die ich schließlich fĂŒr dieses spezielle Problem mit der Position verwendet habe und die geschweifte Klammern enthĂ€lt, besteht darin, sie zu vermeiden und den Positionsblock fĂŒr jede mögliche Kombination zu wiederholen. Das bedeutet

location ~* /[0-9](-.*)(.html)$ {

fĂŒr ... / 8 -... html

location ~* /[0-9][0-9](-.*)(.html)$ {

fĂŒr ... / 88 -... html

location ~* /[0-9][0-9][0-9](-.*)(.html)$ {

fĂŒr ... / 888 -... html etc.


0 fĂŒr Antwort № 2

Sie können es mit vereinfachen + was bedeutet "mindestens eines davon"

location ~* /[0-9]+(-.*)(.html)$ {