2016-07-21 8 views
0

Meine ursprüngliche URL sind wie folgt:Nginx - Rewrite letzte url Segment

http://example.com/lab/file.php?id=4&idl=42 

ich es verschönern wollen, ist es auch die über eine URL zu machen wie folgt vor:

http://example.com/l/not/important/url/part/?id=4&idl=42 

Ich habe versucht, mit folgender Code, aber es funktioniert nicht.

rewrite /l/.*/([^/]+)/?$ /lab/file.php$1 last; 

Wie lösen?

Antwort

1

Alles nach der ? ist die Abfragezeichenfolge und kann nicht mit der rewrite Direktive umgeschrieben werden. Standardmäßig fügt rewrite die ursprüngliche Abfragezeichenfolge jedoch an.

können Sie entweder jede URI umschreiben, die für /l/, zum Beispiel mit /l/ oder erstellen Sie einen Standort beginnt:

rewrite ^/l/ /lab/file.php last; 

oder: über

location ^~ /l/ { 
    rewrite^/lab/file.php last; 
} 

Der ^~ Modifikator macht dieses Präfix Ort haben Vorrang Regex-Standorte auf gleicher Ebene. Details finden Sie unter this document.

In beiden Fällen wird rewrite den ursprünglichen Abfrage-String an den neu geschriebenen URI anhängen. Details finden Sie unter this document.