2016-10-03 3 views
3

Ich habe Hi und Low geschaut und fand keine solche Implementierung und frage mich, ob das, was ich versuche, sogar möglich ist. Ich habe 3 relative Pfade, die statischen Inhalte dienen oben:Wie try_files mit 2 oder mehr Wurzeln zu verwenden

Path1: /usr/local/www/style1/static/... 
Path2: /usr/local/www/style2/static/... 
Path3: /usr/local/www/style3/static/... 

Die 3 verschiedenen Wurzeln statisch sind zu sich selbst, sondern der Inhalt von/statisch auf nach unten ist nur halb-statisch (möglicherweise abhängig von der genauen Datei ein bisschen anders sein serviert werden und kann auf einem Pfad existieren und nicht in einem anderen). Zum Beispiel

/static/css/custom.css 
/static/css/form/button.css 
/static/css/form/images/buttondisabled.png 
/static/images/ui/buttons/add_item.png 
/static/images/ui/menu/help.png 

Folgendes möchte ich tun. Im Wesentlichen, wenn "/ static" Inhalt angefordert wird, möchte ich den relativen Pfad, der path1 zugeordnet ist, prüfen und falls nicht dort, dann prüfe den relativen Pfad, der path2 zugeordnet ist, und falls nicht gefunden, prüfe den relativen Pfad, der path3 zugeordnet ist. Das scheint ziemlich einfach zu sein, aber ich habe keine Beispiele gefunden, die zeigen, wie das gemacht werden könnte. Könnte ich legen Sie die 3 verschiedenen Wurzeln vielleicht als Variablen auf:

path1root /usr/local/www/style1; 
path2root /usr/local/www/style2; 
path3root /usr/local/www/style3; 

location /static 
{ 
    try_files path1root/$uri path2root/$uri path3root/$uri (=404); 
} 

Oder könnte das getan werden, wie da folgt es nur für/statische Inhalte benötigt wird:

location /static 
{ 
    path1root /usr/local/www/style1; 
    path2root /usr/local/www/style2; 
    path3root /usr/local/www/style3; 

    try_files path1root/$uri path2root/$uri path3root/$uri (=404); 
} 

Oder kann, was ich bin versucht zu Wird überhaupt überhaupt gemacht ?? Wenn ich es nicht mit 3 Wurzeln tun kann, könnte es mit nur 2 Wurzeln gemacht werden, ohne eines von ihnen als eine Gesamtbogenbasiswurzel zu definieren. Wenn es möglich ist, dies zu tun und sich von regulären Ausdrücken fernzuhalten, wäre das besser - aber wenn das nötig ist, dann ist das nötig.

Antwort

3

Sie könnten eine gemeinsame Wurzel verwenden und versuchen, die drei Verzeichnisse in der try_files Anweisung:

location /static { 
    root /usr/local/www; 
    try_files /style1$uri /style2$uri /style3$uri =404; 
} 
+0

Ich wusste, es war etwas einfach und ich war etwas mehr als es in meinem Kopf zu verkomplizieren - vielen Dank für die Hilfe – DeJoker

Verwandte Themen