2016-12-26 4 views
0

Ich habe folgende Rewrite-Regel:NGINX Rewrite-Schalter Verzeichnisse

location ^~ /assets { 
    rewrite_log on; 
    rewrite ^/assets/(.*)/(.*)$ /websites/$host/themes/$1/assets/$2 break; 
} 

Also, wenn ich http://localhost/assets/theme1/css/style.css anfordern erwarte ich es es so zu umschreiben:

/websites/localhost/themes/theme1/assets/css/style.css

Stattdessen ist es das umschreibt Anfrage an diese:

/websites/localhost/themes/theme1/css/assets/style.css

Aber, wenn ich die Rewrite-Regel zu ändern:

rewrite ^/assets/(.*)/test/(.*)$ /websites/$host/themes/$1/assets/$2 break;

Und ich ersuche http://localhost/assets/theme1/test/css/style.css alles funktioniert gut.

Warum schaltet es assets mit css?

Antwort

0

Ah, ich glaube, ich bin etwas verwirrt darüber, wie Regex funktioniert. ;) Dies funktioniert perfekt:

rewrite ^/assets/([^/]+)/(.*)$ /websites/$host/themes/$1/assets/$2 break;

ich alles abgestimmt in $1, die theme1/css war, sondern weil ich nur das Thema Namen will, muss ich den / Charakter auszuschließen. Danke trotzdem für das Lesen!

+0

Alternativ können Sie die erste Aufnahme weniger gierig machen, indem Sie '(. *?)' Anstelle von '(. *)' Verwenden. –

+0

Danke! Ich werde das auch versuchen. :) – SomeCode