2017-12-13 5 views
0

Ich denke, diese Art von grundlegenden Dingen ist, aber ich bin zu kämpfen richtige Führer zu finden, die diese Dinge erklären würden:Nginx URL Routing

Ich habe eine index.php Datei und nginx Config so dass https://dev.something.com ok funktioniert.

Aber ich muss nginx Config ändern, so dass diese Adresse leere Seite erzeugt, und index.php funktioniert nur von https://dev.something.com/lists. Ich könnte index.php innerhalb Listen Verzeichnis setzen, aber gibt es nicht subtilere Lösung?

Und hier ist der schwierige Teil: Benutzer sollten in der Lage sein

https://dev.something.com/lists/userName 
https://dev.something.com/lists/userName/listName 

userName und listName zugreifen sollte als GET -parameter verwendet werden.

Kann mir jemand helfen, wie ich diese Art von Konfig mit nginx erreichen konnte?

Antwort

0

Sie sind ein paar (relativ einfache) Fragen zu stellen, und ich möchte Sie mit ihrem freien E-Buch vorschlagen starten https://www.nginx.com/blog/announcing-oreillys-new-book-nginx-a-practical-guide-to-high-performance/

können Sie definieren, wo nginx für Indexdateien mit der Root-Klausel sieht, und obwohl sie normalerweise den URL-Kontext relativ zum Stamm server verwenden, kann er an jedem Ort überschrieben werden.

http://nginx.org/en/docs/http/ngx_http_core_module.html#root

Sie können Teile von URLs als Variablen verwenden, die auch als Paramter übergeben werden kann.

location = /lists { # '=' will match exactly, no trailing url 
     root /path/where/index.php/lives; 
     try_files $uri /index.php; 
    } 
    location /lists { # this will match anything under that url 
     rewrite ^/lists/(\d+)/?$ /lists?user=$1; # matches username 
     rewrite ^/lists/(\d+)/(\d+)/?$ /lists?user=$1&list=$2; # matches username/list 
    } 

    location /{ #everything else 
     root /path/where/index.html/lives; #index.html is empty file. 
     try_files $uri /index.html; 
    } 
+0

Danke! Es funktioniert fast, aber ich denke, dass Ihr Beispiel die Verwendung der Parameter auf Ziffern beschränkt? Und aus irgendeinem Grund ist das $ _GET-Array leer? –

+0

Ja, ich nahm Benutzer-/Listen-IDs an, aber Sie können \ d durch eine Regex-Erfassungsgruppe ersetzen, die Sinn macht. Wenn Sie zusätzliche Argumente haben, können Sie die Variable query_string '? & Query_string;' am Ende der Umschreibungsargumente anheften. – Eddie