2016-03-30 8 views
0

In Apache funktioniert diese Logik gut - und nach der Dokumentation auch mit Nginx.Nginx Rewrite - zuletzt ignoriert?

location = /login/ { rewrite ^(.*)$ /login.php last; } 
rewrite ^/([^/]*)/$ /page.php?c=$1 last; 

Idealerweise würde domain.com/login/ direkt

etwas anderes page.php würde direkt login.php, und entlang der Details übergeben. Stattdessen - alle Anfragen sind gerichtet auf page.php

Ist etwas fehlt? :)

Antwort

0

Ich vermute, Sie haben falsche Annahme, dass die Reihenfolge der Richtlinien zählt, aber eigentlich nicht. Nginx hat eine strikte Reihenfolge der Ausführung von Anweisungen und "server-level" rewrite funktioniert, bevor es versucht, location zu entsprechen.

Sie sollten "Server-Ebene" vermeiden rewrite s. In diesem Fall würde ich schreiben:

+0

Oc bestellen Angelegenheiten. Aber einige Direktiven werden zuerst ausgewertet. Rewrite löst die Neubewertung der Standortblöcke aus. https://www.digitalcean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithmen – quazardous

+0

@quazardous im Allgemeinen Reihenfolge spielt keine Rolle. Es gibt Ausnahmen und Anweisungen von Rewrite-Modul sind am häufigsten. Am zweithäufigsten ist regexp 'location's. –