2016-12-21 2 views
1

Das Webprojekt hat statischen Inhalt in den Some/Content/IMG-Ordner. Die URL-Regel lautet:/img/{einige md5} aber die Lage in den Ordner:/content/img/{Die ersten beiden Ziffern}/Wie man Nginx Regexp in der Position verwendet

Beispiel

url:  example.com/img/fe5afe0482195afff9390692a6cc23e1 
location: /www/myproject/content/img/fe/fe5afe0482195afff9390692a6cc23e1 

Diese nginx Lage ist richtig, aber nicht viel Sicherheit (das Symbol Punkt ist nicht gut in regexp):

 location ~ /img/(..)(.+)$ { 
       alias $project_home/content/img/$1/$1$2; 
       add_header Content-Type image/jpg; 
     } 

die nächste Lage mehr korrekt ist, aber nicht:

 location ~ /img/([0-9a-f]\{2\})([0-9a-f]+)$ { 
       alias $project_home/content/img/$1/$1$2; 
       add_header Content-Type image/jpg; 
     } 

Helfen Sie mir, Fehler für mehr korrekte Nginx Ort zu finden.

+0

Try '/ img/([0-9a-fA -F] {2}) ([0-9a-fA-F] +) $ '(siehe [diese Demo] (https://regex101.com/r/3kpVyx/1)). –

Antwort

1

Der von NGINX unterstützte Regex-Flavour ist PCRE, kein POSIX-BRE, und daher sollten Sie nicht wie in [chars]\{2\} die begrenzenden Quantifizierer-Klammern verlassen.

Verwenden

/img/([0-9a-fA-F]{2})([0-9a-fA-F]+)$ 
       ^^^ 

ist hier ein PCRE regex demo.

EDIT: Es scheint, dass in diesem Umfeld nicht einschränkenden quantifiers verwenden können, und alles, was Sie tun können, das Teilmuster wiederholen:

/img/([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]+)$ 
    ^^^^^^^^^^^^^^^^^^^^^^^^ 
+0

Wie hast du diesen Hut bekommen? – MYGz

+0

@MohammadYusufGhazi: Ich erinnere mich, dass ich einen solchen Chat unter einer Frage oder Antwort hatte. Ich weiß nicht, was ich sonst noch gemacht habe, aber bald habe ich diesen Hut bekommen. –

+0

Oh, hast du viele Upvotes in diesen Kommentaren? – MYGz

Verwandte Themen