2017-12-27 12 views
1

Ich serviere eine Website mit Nginx als Proxy für Apache. Ich habe ein Problem mit dem Rewrite-Modul.nginx Teil der URL mit neu schreiben? Mark

http://example.com/foo/bar/url?someparam=1&otherparam=2

Ich brauche von

/foo/bar/url? Someparam = 1 & otherparam = 2

zu

/foo/bar/url2 neu zu schreiben? Someparam = 1 & otherparam = 2

Ich fand es problematisch, da es nicht /foo/bar/url/someparam ist, aber es ist nur ein Teil des Textes, ich muss in dynamischen URLs neu schreiben. Ich habe versucht: rewrite ^(.*)url(.*)$ $1url2$2; aber ich bekomme Fehler 500 auf das

Wie kann ich das tun?

Antwort

0

In Ihrer rewrite-Anweisung stimmt der neue URI auch mit dem regulären Ausdrucksmuster überein. Dies führt zu einer Umleitungsschleife, die mit einer 500-Antwort endet.

Sie müssen den regulären Ausdruck spezifischer machen, damit der neue URI nicht übereinstimmt.

Auch nginx verwendet eine normalisierte URI bei der Verarbeitung von rewrite Anweisungen, die nicht die ? und die Abfragezeichenfolge enthält, die darauf folgt. So könnte Ihre Aussage wie folgt vereinfacht werden:

rewrite ^(.*)url$ $1url1; 

Die rewrite Richtlinie automatisch in der ursprünglichen URI jeden ? und Query-String wird anhänge.

Weitere Informationen finden Sie unter this document.

Der URI